安比(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)实验室风险监控平台显示,存在同样问题的合约还有一个。
该问题已收录至 智能合约风险列表, 该列表由安比(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
往期文章回顾
以太坊标准接纳中国团队安全建议 -- EIP827安全事件跟踪
安⽐(SECBIT)实验室携⼿路印(Loopring)共同发布智能合约风险列表
以上数据均由安比(SECBIT)实验室提供。合作交流请联系info@secbit.io。
安比(SECBIT)实验室专注于区块链与智能合约安全问题,全方位监控智能合约安全漏洞、提供专业合约安全审计服务,在智能合约安全技术上开展全方位深入研究,致力于参与共建共识、可信、有序的区块链经济体。
安比(SECBIT)实验室创始人郭宇,中国科学技术大学博士、耶鲁大学访问学者、曾任中科大副教授。专注于形式化证明与系统软件研究领域十余年,具有丰富的金融安全产品研发经验,是国内早期关注并研究比特币与区块链技术的科研人员之一。研究专长:区块链技术、形式化验证、程序语言理论、操作系统内核、计算机病毒。
安比(SECBIT)实验室 info@secbit.io
点击“阅读原文”查看更多精彩文章
Scan to Follow