内容简介:以太坊智能合约中混杂进了不少庞氏骗局合约,他们向投资者承诺,如果你向某合约投资一笔以太坊,它就会以一个高回报率回赠你更多的以太币,然而高回报只能从后续的投资者那里源源不断地吸取资金以反馈给前面的投资者。根据区块链大数据评级机构RatingToken最新数据显示,2018年7月20日全球共新增9552个合约地址,其中317个为代币型智能合约,另外值得关注的是同一个账户创建了7900个完全相同的智能合约,共消耗Gas费22 ETH,疑似代投机构批量创建。ETH是一个典型的庞氏代币合约。该合约可以看成虚拟币交易
以太坊智能合约中混杂进了不少庞氏骗局合约,他们向投资者承诺,如果你向某合约投资一笔以太坊,它就会以一个高回报率回赠你更多的以太币,然而高回报只能从后续的投资者那里源源不断地吸取资金以反馈给前面的投资者。
根据区块链大数据评级机构RatingToken最新数据显示,2018年7月20日全球共新增9552个合约地址,其中317个为代币型智能合约,另外值得关注的是同一个账户创建了7900个完全相同的智能合约,共消耗Gas费22 ETH,疑似代投机构批量创建。
ETH是一个典型的庞氏代币合约。该合约可以看成虚拟币交易所,但只有ETH和ETHX (ERC20 token)交易对,每次交易,都有5%的token分配给整个平台的已有的token持有者,因此token持有者在持币期间,将会直接赚取新购买者和旧抛售者的手续费。从ETHX合约代码可以看出,该合约对transferFrom函数进行了扩展,transferFrom函数首先进行allowance限额判定,然后调用了自定义的transferTokens函数来完成转账。
在transferTokens函数中,当to账户地址不等于合约地址,由于事先对from账户额度进行了安全检查,因此后面对from账户的balance运算不会产生溢出。
当to账户地址等于合约地址时,则调用sell函数,sell函数中由于代码编写失误,错误的将from写成msg.sender,对msg.sender的额度进行了减法操作,而在减法操作前没有进行安全检查,因此存在溢出漏洞。
为了完成对这个溢出漏洞的攻击,攻击者需要2个账户A、B,其中A账户代币余额不为0,B账户代币为0。
1)A账户调用approve给B授权一部分转账额度,假设授权额度为1;
2)B账户调用transferFrom,从A账户转1单位代币到智能合约;transferFrom调用sell函数时触发整数溢出,即0-1=2^255。B账户在余额为0的情况下获得了最大额度的token。
在ETHX合约攻击链中,攻击者使用了两个账户地址,分别为:
0x423b1404f51a2cdae57e597181da0a4ca4492f30
0x17a6e289e16b788505903cc7cf966f5e33dd1b94
首先,0x17a6e289e16b788505903cc7cf966f5e33dd1b94调用approve给0x423b1404f51a2cdae57e597181da0a4ca4492f30授权转账额度,参数value=1。
然后,0x423b1404f51a2cdae57e597181da0a4ca4492f30调用transferFrom方法,从账户0x17a6e289e16b788505903cc7cf966f5e33dd1b94向ETHX合约地址0x1c98eea5fe5e15d77feeabc0dfcfad32314fd481 转移1个Token。
调用前,balance(0x423b1404f51a2cdae57e597181da0a4ca4492f30)=0。调用后,溢出后balance(0x423b1404f51a2cdae57e597181da0a4ca4492f30)=2^255。
监控平台显示已经被攻击的同类代币合约如下表:
总结:
但其实究其根本,之所以如此多的智能合约出现同类漏洞,其背后是混乱的数字代币发行现状。还要提醒的是,在数字货币的世界里,各种漏洞都潜伏其中,投资者需要做好漏洞随时暴露的心理准备,同时,平台自身的资质,也是投资者需要仔细考虑的重要因素。
(作者:区块链安全档案,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 以太坊智能合约安全漏洞解读
- 检测了3万多份智能合约,这份白皮书找到了9大智能合约安全漏洞(附下载链接)
- 半年损失25亿美元,智能合约的漏洞像筛子一样多!
- BIA安全周报:XRP假充值漏洞预警 ; EOS恶意合约细节被公报
- 【链得得“日常吐槽”】SECBIT实验室郭宇:以太坊大量合约存在漏洞,可能导致token归零
- 成都链安漏洞分析连载第十一期 :留心合约中“你的名字”—— 继承变量覆盖及构造函数失配
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。