庞博文 - 智能合约攻击方法(二)|暗网潜航

市场上愈来愈多NFT项目,有部份智能合约在编写时因缺乏信息安全意识,令攻击者有机可乘。作为信息安全专家,今期继续分享智能合约攻击方法,与大家集思广益。

「以太坊短地址攻击」(Ethereum Short Address attack) 是一直以来存在于「以太坊虚拟机」(EVM)内的弱点。智能合约使用ABI 定义发出或接收代币地址时,可以使用短地址代替原本赘长的地址,但这功能省略的地址编码,在EVM处理地址时会自动抛入「00」作为补充,并不再就地址进行校验。如果攻击者使用类似SQL Injection的攻击方法,便可自行注入编码构成「上下溢」攻击,导致钱包接收小量代币时,地址不断被改动数值回传,令钱包所有代币被强制提取,所以编写时应避免使用短地址。

「Delegatecall attack, Default Visibilities attack」是另一种攻击方法。编写智能合约时,程序员常用到call、delegatecall和callcode三种函数簇,进行跨合约的函数调用功能。然而程序员往往忘记限制跨合约的数值变量,因此当攻击者将合约调用Delegation,强制变换pwn数值时,便会触发Delegation的Fallback功能。

最后攻击者可以利用被调用的合约,覆写其他合约的储存变量值,达至在合约群内执行任意代码写入任何功能。所以限制跨合约的函数数值变量,才可避免自己的合约变成袭击其他合约的帮凶。如果攻击者在其中一张合约里执行suicide或self-destruct操作,更有可能强制冻结其他合约的转帐功能(Freezing ether attack)。
TOZ联合创办人
庞博文
更多文章