防止对以太坊的智能合约攻击——代码分析

防止对以太坊的智能合约攻击——代码分析

防止对以太坊的智能合约攻击——代码分析_第1张图片

防止对以太坊的智能合约攻击——代码分析_第2张图片

以太坊智能合约的特点之一是能够调用和利用来自其他外部合约的代码。

合约通常也处理以太,并且经常将以太发送到各种外部用户地址。这些操作要求合约提交外部调用。这些外部调用可能会被攻击者劫持,攻击者可以强制合约执行进一步的代码(通过一个回退函数),包括对自身的调用。

这类攻击被用于臭名昭著的DAO攻击。

了解漏洞

这种类型的攻击可能发生在合约将以太发送到未知地址时。攻击者可以在回退函数中小心地在包含恶意代码的外部地址上构造合约。

因此,当一个合约将以太发送到这个地址时,它将调用恶意代码。通常,恶意代码会在易受攻击的合约上执行一个函数,执行开发人员意想不到的操作。

术语“可重入性”源于此:外部恶意合约调用了易受攻击的合约上的一个函数,代码执行的路径“重新进入”了它。

为了澄清这一点,考虑一下易受攻击的EtherStore.sol,作为一个以太坊金库,存款人每周只能提取1个以太:

防止对以太坊的智能合约攻击——代码分析_第3张图片

​ EtherStore.sol

这个合约有两个公共功能,de

你可能感兴趣的:(以太坊,智能合约,数字货币)