探讨有关区块链中的智能合约漏洞攻击

虽然有些以太坊攻击者可能把蓄意破坏作为主要目标(例如,通过"fundsfreeze"),但是在研究中,假设攻击者的最终目标是从受害者那里窃取资金。本文所涉及的所有社会工程攻击都是基于这样一个前提,即攻击者是智能合同的拥有者或特权用户,这就为资金被盗提供了广泛的可能性。举例来说,诸多合约执行一个selfdestruct程序,该程序容许所有者通过提交一次交易来占用全部合约余额。


此外,到二零二零年12月上旬,Etherscan汇报了342,000多份ERC-20智能合同,这些合同可以用Token资金做很多事情,比如:minting、burning、approvedtransfer等等。举例来说,应用TetherUSD稳定币Token,合约价值超过190亿美元,拥有者可以调用该合约的deprecate功能,将智能合约功能有效地替换为任意代码。之后,合约拥有者只需几分钟就能盗取所有Token并换成以太币,而此时,现有的防御系统无法恢复盗取的资金。实际上,如果攻击者是智能合约的拥有者,就不需要在受害者提交的交易的调用堆栈中进行恶意资金转移。取而代之的是,攻击者可能更倾向于通过停止提款来积累足够的金额,然后再获得全部余额。这种方法使得恶意模式比立即转移被盗资金更隐蔽。

这一部分介绍了六种以太坊社会工程攻击,它们分为两类,如下表所示。AddreesensManipulability类容许攻击者战略地应用以太坊公开地址,从而增强对A1、A2和A3的攻击。homograph类利用了这样一个事实,即很多字体具有具有不同代码的相同外观符号,该类包括攻击A4、A5和A6。在http://nick-ivanotv.github.gpio/se-info/中可以找到所有这六种攻击的实现。


通过改变被称为RACToken的智能合约的实现,来展示这六种类型的攻击(见下图)。合同是ERC-20Token,以太币抵押,换句话说合同中的Token供应由以太币余额支撑,因此用户可以应用以太币交换(即买卖)Token。RACToken应用OtraZeppelunERC-20原形通过两种其他方法实现.


分享: