OnPlace (OPL)合约:猝不及防的的虚假烧币漏洞
摘要: 极罕见的由乘法运算导致整数溢出,进而引发虚假烧币的安全漏洞。
在智能合约漏洞频出的背景下,我们又发现了一个存在严重安全漏洞的智能合约——OnPlace(OPL)!
一直以来“智能合约”漏洞已经成为区块链安全的重灾区。攻击者通过发布包含恶意代码的“智能合约”,经过一系列的操作之后,控制区块链网络中的所有节点,从而为所欲为。从The DAO到BEC,SMT,RMC,Ammbr(AMR),再到现在的OPL。
之前就有说过,发现OnPlace (OPL) Token 合约中存在整数溢出漏洞。该合约烧币功能存在乘方运算可导整数溢出,通过精心构造指数,使得烧币的实际值为零(虚假烧币)。
回顾到之前的溢出漏洞AMR:
据曲速未来安全区之前的披露:2018年6月29日,香港最大的数字货币交易所Coinsuper(币成)全球首发了Ammbr(AMR)。之后被监控到AMR合约存在高危安全风险的交易。通过对代码分析,发现其中存在重要安全溢出漏洞,报道时已经被人恶意利用并且进行大量增发。对此,曲速未来安全区也做出了提醒:智能合约需要进行严格谨慎的安全评估才可以代表资产进行交易,同时也请相关用户注意数字资产安全。
漏洞说明:
这次漏洞是属于一类通用问题,在之前已经被爆出过,还将此漏洞命名为multiOverflow。此漏洞是由于整型溢出问题引起,最终会导致原交易发起人使用0个或者少量的币就可以给其他地址转入大量的代币。
此漏洞是由于整型溢出问题引起,详细缺陷代码片段如下:
现在的这个OPL合约由乘⽅运算导致整数溢出,进而引发虚假烧币的安全漏洞。
OPL Token 目前并未上线交易所,但目前仍有较活跃的交易,疑似处于众筹阶段。
问题合约代码 burnWithDecimals() 函数中 10 ** _dec 这⼀乘⽅操作存在整数溢出漏洞,可使计算结果为 0。若 _dec 传⼊值⼤于 255,则最终 _value值会被更新为 0。
黑客可通过构造攻击参数,在自身余额并不减少的情况下,触发烧币 Burn() 事件。如果有 DApp 监听此事件并根据燃烧代币的数值进⾏下⼀步操作,⿊客则完成了虚假烧币操作,后果将⼗分严重。对此,建议项⽬⽅⽴即废弃该合约,并重新发布修复后合约。DApp 开发者和项⽬⽅切勿信任此合约的烧币 Burn() 事件。
特别提醒一下:开发者应该提高自己的安全意识,由于乘法操作极易发生溢出, SafeMath只涉及了加减乘除操作,开发者使用时应当慎之谨慎。
事实上此合约还存在其他问题,如 burnWithDecimals() 中的乘法操作也没有做整数溢出防护,emission() 函数也有类似问题。
区块链安全档案再次倡议:项目应该采取措施,及时做好补救⼯作。还有项目方在发行Token时一定要慎之又慎,应建立自己统一的安全标准,并对照安全标准严格执行,进行逐一检查。遵守智能合约安全开发规范,引入安全审计流程,必要时请专业的智能合约审计公司,对合约代码用形式化验证的方法进行审计,并由审计公司给出详细的审计报告,确保万无一失。
我们同时也请普通持币户保持警惕,对不熟悉的代币在购买时也要更为谨慎,选择通过专业的代码审计平台审计过的代币合约才能有效地保障自己的数字资产的安全,要做到防患于未然。
评论(0)
Oh! no
您是否确认要删除该条评论吗?