OnPlace (OPL) Token 合约安全漏洞引发虚假烧币事件
摘要: 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。
评论(0)
Oh! no
您是否确认要删除该条评论吗?