OnPlace (OPL) Token 合约安全漏洞引发虚假烧币事件

SECBIT实验室
SECBIT实验室 机构得得号

Jul 26, 2018 聚焦智能合约安全审计和形式化验证。

摘要: 7 月 5 日,安比实验室发现 OnPlace (OPL) Token 合约中存在整数溢出漏洞。该合约烧币功能存在乘方运算可导整数溢出,使得烧币的实际值为零(虚假烧币)。

安比(SECBIT)实验室发现极罕见的由乘方运算导致整数溢出,进而引发虚假烧币的安全漏洞。

7 月 5 日,安比(SECBIT)实验室发现 OnPlace (OPL) Token 合约中存在整数溢出漏洞(CVE-2018-13151 fake-burn)。该合约烧币功能存在乘方运算可导整数溢出,通过精心构造指数,使得烧币的实际值为零(虚假烧币)。

黑客可通过构造攻击参数,在自身余额并不减少的情况下,触发烧币 Burn() 事件。

安比(SECBIT)实验室已于 7 月 16 日尝试邮件联系项目方,对方尚无反馈。

建议项目方立即废弃该合约,并重新发布修复后合约。DApp 开发者和项目方切勿信任此合约的烧币 Burn() 事件。

问题合约地址:0x12AC8d8F0F48b7954bcdA736AF0576a12Dc8C387

OPL Token 目前并未上线交易所,但目前仍有较活跃的交易,疑似处于众筹阶段。

问题合约代码 burnWithDecimals() 函数中 10 ** _dec 这一乘方操作存在整数溢出漏洞,可使计算结果为 0。若 _dec 传入值大于 255,则最终 _value 值会被更新为 0。

黑客可通过构造攻击参数,在自身余额并不减少的情况下,触发烧币 Burn() 事件。如果有 DApp 监听此事件并根据燃烧代币的数值进行下一步操作,黑客则完成了虚假烧币操作,后果将十分严重。

安比(SECBIT)实验室提醒开发者,乘方操作极易发生溢出,而常见 SafeMath 只涉及了加减乘除操作,开发者使用时应当慎之又慎。

事实上此合约还存在其他问题,如 burnWithDecimals() 中的乘法操作也没有做整数溢出防护,emission() 函数也有类似问题。

另外安比(SECBIT)实验室风险监控平台显示,存在同样问题的合约还有一个。

地址:0x745Fa4002332C020f6a05B3FE04BCCf060e36dD3

合约名称:Quartex (QTX)

交易量:2

该问题已收录至 智能合约风险列表, 该列表由安比(SECBIT)实验室发起共建并持续维护,我们将不间断更新问题 Token 合约信息 [1]。

智能合约风险列表仓库地址 https://github.com/sec-bit/awesome-buggy-erc20-tokens

安比(SECBIT)实验室再次呼吁,项目方发行 Token 一定要慎之又慎,遵守智能合约安全开发规范,引入安全审计流程,必要的时候采用形式化验证 手段,确保万无一失。

智能合约形式化验证示例:https://github.com/sec-bit/tokenlibs-with-proofs

参考文献
[1] 智能合约风险列表(awesome-buggy-erc20-tokens) https://github.com/sec-bit/awesome-buggy-erc20-tokens 

以上数据均由安比(SECBIT)实验室提供,合作交流请联系info@secbit.io。

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 SECBIT实验室 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信