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

最近我与团队开展安全监控中心及漏洞研究队伍,对一些NFT项目进行安全监控。过程中发现及制止不少攻击行为,因此整理八种智能合约威胁,将分几期与大家分享。

这些威胁大部份是因编写智能合约与铸币程序时,其程序逻辑混乱和配置错误而引起。它们可分为恶意行为(Malicious Acts)、弱协议(Weak Protocol)、令牌诈骗(Token defraud)及应用程序错误(Application Bugs)四大类,当中涉及八种攻击方法,对安全编码有一定认识的读者会较容易明白。

第一种方法是「智能合约重入攻击技术」(Smart Contract Reentrancy attack techniques),在编写智能合约时,程序员会输入函数值的代码,若果没有限制函数值的传输和递归回调,攻击者就可以不断插入和提交函数值的递归回调,形成无限而且重复的循环,最终耗尽合约里的可用余额,直至破坏整个机制。这攻击技术更可分为「单功能重入攻击」和「跨功能重入攻击」,所以编写智能合约时,必须限制每个函数值的传递和递归回调。

第二种是「智能合约的上溢和下溢攻击」(Overflow and Underflow attack),智能合约主要以Solidity编写,如果编写时没有限制交易输入数值,并容许输入未经授权数值,便有机会因位元增减产生「上溢出」及「下溢出」漏洞。当漏洞发生时,攻击者可插入已改变的地址函数,把合约承载的以太币随意传输到指定地址,所以一定要限制交易后的输入数值和授权数值。
TOZ联合创办人
庞博文
更多文章