BEC、SMT整数溢出攻击漏洞详解

最近BEC、SMT爆出的整数溢出攻击漏洞(Integer Overflow Attack)给许多人上了深刻的一课,大家才开始意识到即使开发一个安全的空气币也是需要一定技术实力及严格的代码审核机制。COOS在设计的时候便已考虑到了溢出攻击及下溢攻击等安全问题,并做了多重安全处理机制,因此COOS对此类攻击是完全免疫的。

BEC、SMT整数溢出攻击漏洞详解

此次爆出的溢出攻击漏洞可让攻击者轻易的绕过安全检测,从而不需花费任何成本即可获得大量Token。详细解释如下:

易受攻击的函数位于batchTransfer中,代码如下图所示。

  • 第257行中的amount为cnt和_value的乘积。第二个参数,即_value,可以是任意的256位整数。
  • 通过使用一个足够大的_value,并把两个_receiver传递给batchTransfer(),我们可以溢出amount并使其为零。
  • 在数量为零的情况下,攻击者可以通过第258-259行的完整性校验,从而绕开第261行的代码(减少黑客余额的操作)。
  • 最后,如262-265行所示,两个_receiver的余额都获得非常大的数值!从而黑客在无需任何成本的情况下获得了巨额Token!

BEC、SMT整数溢出攻击漏洞详解

据统计,市面上有大量的币都存在该漏洞。基于区块链上”代码即法则”的理论,因此目前没有任何方式可修复该漏洞。由于该漏洞的攻击方案并不难掌握,换句话说目前交易所的不少币已经成为黑客的收割机。

该漏洞也可让黑客轻而易举的操纵币价(参考之前币安遭受的攻击),从而让该币币值在刹那间灰飞烟灭。

BEC、SMT整数溢出攻击漏洞详解

以太坊本身从来不是一个自带安全的平台:除整数溢出攻击外,还有整数下溢攻击等等,所以发币的代码一定要具有彻底和严格的代码审核机制,否则分分钟所有资产化为乌有。

此次漏洞也为支持线下交易的去中心化交易所敲响了警钟,该类交易所将无法对该类漏洞攻击及倾售做出及时反应。

1