主要观点总结
描述了TokenWhale合约中的不安全调用漏洞,该漏洞存在于approveAndCallcode函数中,允许执行任意调用并可能导致潜在的安全风险和意外后果。
关键观点总结
关键观点1: 漏洞描述
TokenWhale合约的approveAndCallcode函数使用低级调用(_spender.call(_extraData))执行代码,没有对提供的_extraData进行任何验证或检查。这可能导致意外行为、可重入攻击或未经授权的操作。
关键观点2: 漏洞影响
如果调用数据是可控的,很容易引发任意函数执行,可能导致TokenWhale合约被清空。
关键观点3: 测试方法
通过测试函数testUnsafeCall来模拟攻击者利用该漏洞,尝试对TokenWhaleContract进行不安全的调用以转移资产。
关键观点4: 缓解措施
应尽可能避免使用低级的"call"。在必须使用时,应确保对提供的调用数据进行严格的验证和检查。
文章预览
名称: 不安全调用漏洞 描述: 在TokenWhale合约的approveAndCallcode函数中。该漏洞允许执行任意调用,带有任意数据,导致潜在的安全风险和意外后果。该函数使用低级调用(_spender.call(_extraData))从_spender地址执行代码,而没有对提供的_extraData进行任何验证或检查。这可能导致意外行为、可重入攻击或未经授权的操作。 这个练习是关于对合约的低级调用,其中输入和返回值都没有被检查
如果调用数据是可控的,就很容易引发任意函数执行。 缓解措施: 应尽可能避免使用低级的"call"。 参考: https://blog.li.fi/20th-march-the-exploit-e9e1c5c03eb9 TokenWhale合约: contract TokenWhale { address player; uint256 public totalSupply; mapping( address => uint256) public balanceOf; mapping( address => mapping( address => uint256)) public allowance; string public name = "Simple
………………………………