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

最近我與團隊開展安全監控中心及漏洞研究隊伍,對一些NFT項目進行安全監控。過程中發現及制止不少攻擊行為,因此整理八種智能合約威脅,將分幾期與大家分享。

這些威脅大部份是因編寫智能合約與鑄幣程序時,其程序邏輯混亂和配置錯誤而引起。它們可分為惡意行為(Malicious Acts)、弱協議(Weak Protocol)、令牌詐騙(Token defraud)及應用程序錯誤(Application Bugs)四大類,當中涉及八種攻擊方法,對安全編碼有一定認識的讀者會較容易明白。

第一種方法是「智能合約重入攻擊技術」(Smart Contract Reentrancy attack techniques),在編寫智能合約時,程序員會輸入函數值的代碼,若果沒有限制函數值的傳輸和遞歸回調,攻擊者就可以不斷插入和提交函數值的遞歸回調,形成無限而且重複的循環,最終耗盡合約裏的可用餘額,直至破壞整個機制。這攻擊技術更可分為「單功能重入攻擊」和「跨功能重入攻擊」,所以編寫智能合約時,必須限制每個函數值的傳遞和遞歸回調。

第二種是「智能合約的上溢和下溢攻擊」(Overflow and Underflow attack),智能合約主要以Solidity編寫,如果編寫時沒有限制交易輸入數值,並容許輸入未經授權數值,便有機會因位元增減產生「上溢出」及「下溢出」漏洞。當漏洞發生時,攻擊者可插入已改變的地址函數,把合約承載的以太幣隨意傳輸到指定地址,所以一定要限制交易後的輸入數值和授權數值。
TOZ聯合創辦人
龐博文
更多文章