织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 竞争币

详解以太坊智能合约安全性漏洞 如何有效减少 DeFi 攻击?(3)

时间:2021-03-08 18:07来源:未知 作者:admin 点击:
以太坊区块链环境:运行在如下四层的环境中:用户与以太坊区块链进行交互的Web界面;以太坊客户的数据库,用于存储区块链数据;出于安全目的的加密机

以太坊区块链环境:运行在如下四层的环境中:用户与以太坊区块链进行交互的Web界面;以太坊客户的数据库,用于存储区块链数据;出于安全目的的加密机制;以及支持以太坊节点之间的区块链通信的互联网基础设施。我们将以太坊区块链架构与环境区分开来,因为针对以太坊区块链的攻击可能来自环境,并且这些攻击可能在环境中得到更好的解决,而不是由以太坊解决。

以太坊智能合约漏洞

重点介绍了以太坊体系每一层的智能合约漏洞。

以太坊应用层

重入性:此漏洞最初是从DAO攻击中发现的[1],当外部被调用方合约在用方合约完成之前(即某种意义上是循环调用)在调用方合约中回调函数时,会发生此漏洞。这使攻击者可以绕开适当的有效性检查,直到调用者合约被耗尽以太币或交易用完为止。

委托呼叫注入:首先从对Parity钱包的攻击中发现了此漏洞[2]。为了促使代码重用,EVM提供了一个操作码委托调用,用于将被调用方合约的字节码插入到调用方合约的字节码中。结果恶意的被调用方合约可以直接修改(或操纵)调用方合约的状态变量。此漏洞是由于被调用方合约可以更新调用方合约的状态变量而导致的。声明旨在通过委托调用作为库共享的无状态合约,可完全防此漏洞。

冻结以太:首次从对Parity钱包的攻击中发现了此漏洞[3]。该漏洞产生由于用户无法将钱存入其合约帐户,而无法从这些帐户中支出资金,从而有效冻结了他们的资金。

升级合约:引入合约升级的思想是为了缓解智能合约一旦部署后就无法修改的问题,即使以后发现它们存在漏洞。为了允许合约升级,有两种方法:(i)将合约分为代理合约和逻辑合约,以使开发人员可以升级后者而不是前者;(ii)使用注册管理机构合约来保存更新后的合约。这些方法虽然有效,但却引入了一个新的漏洞:当合约开发者变得恶意时,更新的合约可能是恶意的。此漏洞(即,不安全的联系人更新)仍然是一个未解决的问题。

具有意外还原的DoS:发生这种情况的原因是,由于主叫方合约遇到外部呼叫失败而导致事务被还原,或者被叫方合约故意执行还原操作以中断主叫方合约的执行。此漏洞是由执行被调用方合约还原的调用方合约引起的。通过使接收者调用交易来「提取」发件人为接收者预留的资金,可以防止此漏洞,从而有效地防止了发件人的交易被还原。

整数上溢和下溢:首次从针对BEC令牌的攻击中发现了此漏洞[4]。当运算的结果超出了Solidity数据类型的范围时,就会发生这种情况,例如导致对攻击者的余额或其他状态变量进行未经授权的操纵。该漏洞是由Solidity源代码未在数字输入上执行正确的验证引起的,并且Solidity编译器和EVM均未提供整数上溢/下溢检测。可以通过使用SafeMath库来防止此漏洞处理这些问题。 (责任编辑:admin)

织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容