距BEC现重大漏洞几近归零仅时隔三天,智能合约再曝安全漏洞。

今早,SMT遭到与BEC类似溢出攻击,

https://etherscan.io/tx/0x1abab4c8db9a30e703114528e31dee129a3a758f7f8abc3b6494aad3d304e43f

SMT于此前已经登陆多家交易平台,随后,火币Pro发布公告称,SmartMesh(SMT)项目方反馈今日凌晨发现其交易存在异常问题,经初步排查,SMT的以太坊智能合约存在漏洞。火币Pro也同期检测到TXID为:0x0775e55c402281e8ff24cf37d6f2079bf2a768cf7254593287b5f8a0f621fb83的异常。受此影响,火币Pro现决定暂停所有币种的充提币业务。

随后,火币Pro又发布公告称暂停SMT/USDT、SMT/BTC和SMT/ETH的交易。此外,OKEx,gate.io等交易平台也已经暂停了SMT的充提和交易。截止暂停交易,SMT在火币Pro的价格下跌近20%。

据区块链安全公司 PeckShield 分析,SMT的智能合约中proxyTransfer() 函数存在一个经典的整数溢出问题。_fee 和 _value_ 这两个输入参数都能被攻击者控制,如果 _fee + _value 的结果正好为 0(也就是溢出的情况),第206行的检查将会失效。

这意味着攻击者不需要任何Token,就可以向一个地址转入大量的Token(第214行);同时根据第217行的代码,相当数量的手续费也将发送给 msg.sender

上一个漏洞差点蒸发60亿

由以太坊智能合约的溢出漏洞引发的安全事件并不是第一次,距上次发生此类严重漏洞才过去了短短3天。

4月22日,BEC出现异常交易,据分析,BEC 智能合约中的 batchTransfer 批量转账函数存在漏洞,攻击者可传入很大的 value 数值,使 cnt * value 后超过 unit256 的最大值使其溢出导致 amount 变为 0。

操作记录:https://etherscan.io/tx/0xad89ff16fd1ebe3a0a7cf4ed282302c06626c1af33221ebe0d3a470aba4a660f

简单来说,BEC的某一段代码忘记使用safeMath方法,导致系统产生了整数溢出漏洞,利用该漏洞,黑客可以通过转账手段生成大量原本合约中不存在的代币,并将这些“无中生有”的代币在市场进行抛售。

由于黑客转出的代币数量远远超过BEC发行数量70亿枚,加之由此引发的恐慌抛售,BEC市值瞬间几乎归零。OKEx随后发布公告,暂停BEC交易和提现。美链团队方面也发布公告称系统即将回滚。

多个ERC20智能合约受影响

智能合约安全事件频发引起的盗币问题引起外界关注,微博研发副总经理Tim Yang发布个人微博称,

“最近的 ERC20 的转账的安全问题,直接原因都是代码安全漏洞,由程序员背锅,但大家比较少讨论其深层次的原因,为什么以太坊比较容易出安全问题?以太坊只是一个记录 dapp 执行结果的区块链,其本身并没有加密货币复式记账所需的 utxo 模型。重要的 token 资产本身是需要货币级别的安全程度,以太坊目前的设计更适合游戏积分之类的合约运行结果。”

因此,他强调,重要的 token 资产不适合构建在  ERC20体系基础之上。

出问题的只是BEC和SMT吗?问题可能比想象的严重得多。区块链安全公司 PeckShield发出预警称,多个ERC20智能合约遭受proxyOverflow漏洞影响,其检测定位到大量的ERC20 Token都受此影响,包括:

通过以太坊智能合约“发币”容易,若不做好严格的代码审计和安全防护,亿级资金的损失只在一瞬间。巴比特特此提醒,项目方应做好自查,必要时请外部公司进行审计,交易平台应做好对项目方的审核工作和自身安全防护,投资者亦应注意风险。

声明:本文来自巴比特,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。