以太坊erc20智能合约任意转账漏洞分析

阅读量317820

|评论5

发布时间 : 2018-05-24 17:10:08

漏洞描述

以太坊erc20智能合约存在漏洞,transferFrom转账函数校验不严格,导致攻击者可以转走任意用户的代币。

 

漏洞影响

昨天,经过360智能合约平台监控发现,edu代币存在交易异常,经过分析发现,其智能合约transferFrom函数存在问题,导致攻击者可以转走任意用户的代币,最后经过分析发现包括EDU在内总共有7个智能合约存在相同的问题,其代币合约地址:

1.0x81f074bb3b158bf81799dcff159521a089e59a37

2.0x6ec0a0901715e0d015fd775e5dfddd7f2de0308e

3.0x87be146d2e2d2ae71a83895a3ad15c66546af5e2

4.0xf270f361edca19f7063184b0e6b4f264468ecbc1

5.0x0156888f51d68f858ac88aba45df699e2af2e4cc    VRT

6.0x14d9779b6585f3a7d4f768383b3cb030705dad2e   BAI

7.0xa0872ee815b8dd0f6937386fd77134720d953581   EDU

其中前四个合约已经很久没有交易,基本废弃。目前还在交易的,影响比较大的是后三个代币。

以EDU代币为例,我们可以看到较近交易数据中存在大额交易异常,如下图所示:

 

漏洞成因

经过分析发现EDU代币的transferFrom函数中,allowed[from][msg.sender]减去要转账的数字时候,没有对比allowed[from][msg.sender]的值与value的值得大小,从而使得可以转走比allowed[from][msg.sender]大的数目的代币。

 

如何避免这个问题

经过对这些合约的分析,我们发现基本上合约开发人员会去校验blances[from]的值,而对allowed[from][msg.sender]的校验却忽略了,合约开发者开发者应该去选择调用更安全的safemath库函数来进行数字运算操作,防止任意转账的操作。

 

关于我们

360作为全球最大互联网安全企业,致力于提供区块链相关安全解决方案,为区块链行业客户及互联网用户提供安全保障。

本文由360 Aegis实验室原创发布

转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/146010

安全客 - 有思想的安全新媒体

分享到:微信
+10赞
收藏
360 Aegis实验室
分享到:微信

发表评论

内容需知
  • 投稿须知
  • 转载须知
  • 官网QQ群8:819797106
  • 官网QQ群3:830462644(已满)
  • 官网QQ群2:814450983(已满)
  • 官网QQ群1:702511263(已满)
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 360网络攻防实验室 安全客 All Rights Reserved 京ICP备08010314号-66