【链安科技】无限授权转账漏洞


2018年7月10日晚, 有相关安全公司创建并维护的智能合约风险列表仓库中接收到问题合约提交请求(漏洞报告者 xhyumiracle 来自长亭科技)。Lightcoin Token合约(合约地址:0xd97579Cea3fE2473682a4C42648134BB982433B9)的授权转账方法存在漏洞,授权账户可无限转出被授权账户的金额,并且,授权账户可以利用这个漏洞给任意账户授权。



Lightcoin 合约的 transferFrom() 函数,即授权转账函数,在执行完转账后本该修改授权金额,减去已转出部分金额。但这一步骤中把这授权账户地址写错了,也就是将allowed[_from][msg.sender] -= _value; 误写成了 allowed[_from][_to] -= _value;,进而引发了漏洞。


注:_from 地址为被授权地址,实际转出 Token 的地址;_to 地址为转账接收地址;msg.sender 为当前操作账户地址,也就是,授权账户地址。

该安全公司的小伙伴迅速分析了该漏洞指出,这个漏洞引发的后果有两方面:

授权账户在完成授权转账后,其被授权的金额不会改变,也就是说,授权账户可以无限转出被授权账户的金额。

转账完成后实际修改的是这笔转账接收地址(to)对于被授权账户 _from 的授权转账金额,但是由于对 allowed[_from][_to] -= _value;操作并没有做溢出校验,可以利用溢出来给 _to 地址巨额的授权。

若 _to 地址原本就有授权,那么授权金额可能减小,也溢出为一个极大的值。

若 _to 地址原本没有授权,即 allowed[_from][_to 值为 0, 就可以利用溢出获得这个被授权地址(_from 地址)的授权,一旦授权后,就可以无限转账。

据悉,Lightcoin 项目方已获知该漏洞并已完成合约升级工作,提醒广大持币用户不必恐慌,做好升级工作即可。

目前问题合约已作废:0xd97579Cea3fE2473682a4C42648134BB982433B9

升级后新合约地址为:0x1295b55fA04FBAc6d9e7c351Ecb3486e88129027

根据相关安全公司风险监控平台显示,存在相同漏洞的合约共 9份,强烈建议各个项目方和交易所及时做好自查工作。下图为该问题的合约地址(出于对项目方的保护,合约地址已部分马赛克)。

本文转载自《无限授权转账漏洞》,版权属于原作者,已获得授权

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 有相关安全公司风险监控平台于今日发现,ERC20代币合约F_E由于业务逻辑实现漏洞,任何人都可以随意转出他人账户中...
    笔名辉哥阅读 784评论 0 51
  • 最近一段时间,关于智能合约漏洞的问题层出不穷。我将以SMT为蓝本进行复盘,通过复盘去深层次了解和防止类似事件发生。...
    廖全磊LesterLiao阅读 4,512评论 0 4
  • 在继智能合约漏洞溢出问题引发了一系列损失过后,5月24号,有安全团队再次爆出漏洞溢出的问题(CVE-2018–11...
    笔名辉哥阅读 1,259评论 0 51
  • 一、ATN介绍 ATN作为全球首个区块链+AI项目,是一个去中心化的、无需授权的、用户自定义人工智能即服务(AIa...
    CPinging阅读 410评论 0 0
  • (注:本文是在原文的基础上,根据个人的理解,修改部分内容并添加了一些注释) 买卖部分代码未调试通过 基础版的代币合...
    中v中阅读 2,943评论 0 2