[tp钱包官网下载app苹果]如何“安全”发送资产?从QBridge被攻击事情说起

2022 年 01 月 28 日, QBridge 遭受攻击,损失约 8000 万美金。网上有慢雾的分析报告。在这个推文中,我们尝试从代码出发,分析问题出现的最本质原因。原因我们的分析发现,这一问题主要由于以下原因所造成。项目方没有使用常用的OpenZeppelin的库来处理资产的安全转移,而是使用了自己实现的一个库(SafeToken.sol)在自己实现的库中,对于safeTransfer函数的实现相比OZ缺少了是否为合约的判断(当然判断是否为0也可以)EVM在一个low level的函数调用中,如果target为0,返回值是 true。也就是返回值为true并不一定说明函数调用成功,也有可能说明目标合约根本不存在。当然,具体是攻击的时候,还需要结合合约本身的逻辑来进行。在以上原因汇总,第三个原因是比较出乎意料的,也就是对一个0地址合约的函数调用返回值是true,而不是false。有问题的代码如下图:

发表回复

您的电子邮箱地址不会被公开。


Warning: Cannot modify header information - headers already sent by (output started at /www/wwwroot/i-bin.cn/wp-includes/class.wp-styles.php:214) in /www/wwwroot/i-bin.cn/index.php on line 18