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

今期是最后一期介绍智能合约攻击方法,希望可借此加深读者对智能合约的认识,时常谨记讯息安全的重要性。

第七种智能合约攻击方法是「智能合约反编译攻击」(Smart contract decompilation attack)。虽然普遍我们只能从智能合约得到一个ABI作为连结资料,但目前网络上有很多不同Solidity反编译工具,因此智能合约部署后,其内容被编译及被公开基本上无法幸免,对智能合约是极大隐忧,这也是不法之徒利用Speed Trading大赚特赚的原因。所以我建议在编写智能合约时,避免使用太复杂及太多功能逻辑,倘不能避免使用复杂逻辑,则应把它分为多个不同合约,以防因太多不同逻辑重复,导致灰色地带和逻辑矛盾。

第八种手法是「无限铸造攻击」(Infinite Forging attack),这攻击不时源于程序员编写智能合约时的粗疏及大意。大多智能合约都会使用调用函数mint_approved,用于检测用户是否在白名单内及验证铸造网站的电子签署,但当程序员忘记info.from == msg.sender进一步检查认证时,攻击者可不断注册不在白名单内的新钱包地址,用这些新地址无限铸造代币。所以智能合约里每个调用和呼叫功能都要仔细进行签名验证,否则后果堪虞。

其实这些攻击方法并不罕见,但区块链行业欠缺信息安全相关知识和意识,如果不加以改善,将令投资者失去信心,希望程序员和工程师能多加留意。
TOZ联合创办人
庞博文
更多文章