龐博文 - 智能合約攻擊方法(二)|暗網潛航

市場上愈來愈多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聯合創辦人
龐博文
更多文章