《表1 重入漏洞代码段:智能合约的安全研究现状与检测方法分析综述》
如表1所示简单实现了存款和取款的操作。用户可以进行存钱,合约会记录每个用户的存款额度,同时用户可以通过withdraw函数取出自己的存款。这段代码似乎在逻辑上没有漏洞,但是问题出现在第9行,在进行存款回收转账时的call.value()函数上。以太坊中send()和transfer()函数只有2300gas处理转账操作,call.value()函数会将合约剩余的所有gas全部用于外部调用。若转币时目标地址是一个合约,那么会自动调用合约中的fallback函数,若攻击者在部署一个恶意递归调用转账操作的合约,则会将公共钱包合约里的余额全部提出来,对被攻击合约造成巨大损失。
图表编号 | XD00173382200 严禁用于非法目的 |
---|---|
绘制时间 | 2020.07.10 |
作者 | 郑忠斌、王朝栋、蔡佳浩 |
绘制单位 | 工业互联网创新中心(上海)有限公司、工业互联网创新中心(上海)有限公司、上海大学 |
更多格式 | 高清、无水印(增值服务) |