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

我的网站

当前位置: 主页 > 竞争币

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

时间:2021-03-08 18:07来源:未知 作者:admin 点击:
操纵余额:当合约的控制流决策依赖于此值时,会发生此漏洞。平衡或解决(balance)平衡,攻击者可以利用它使自己成为唯一可以获取金钱的人。可以通

操纵余额:当合约的控制流决策依赖于此值时,会发生此漏洞。平衡或解决(balance)平衡,攻击者可以利用它使自己成为唯一可以获取金钱的人。可以通过不使用任何条件声明中的合约余额来防止此漏洞[5]。通过tx.origin进行身份验证:tx.origin是Solidity中的全局变量,它指的是发起有问题交易的原始EOA。当合约使用tx.origin进行授权时会发生此漏洞,这可能会受到网络钓鱼攻击的危害。通过使用msg.sender而不是tx.origin进行身份验证,可以防止此漏洞,因为msg.sender返回导致该消息的帐户。

错误的可见性:错误地指定功能的可见性,从而允许未经授权的访问。

无保护的自杀:合约的所有者(或受委托的第三方)可以使用自杀或自毁方法销毁合约。取消合约时,将删除其关联的字节码和存储。该漏洞是由合约强制执行的身份验证不足引起的。可以通过强制执行例如多因素身份验证来缓解此漏洞,这意味着自杀操作必须得到多方的批准。

将以太币泄漏到任意地址:当任意调用方都可以提取合约的资金时,该漏洞就不会发生,该调用方既不是合约的所有者,也不是向合约存入资金的投资者。此漏洞是由调用者调用将以太币发送到任意地址的功能时无法检查呼叫者的身份引起的。通过对发送资金的功能进行适当的身份验证,可以防止此漏洞。

机密性失效:在区块链中,由于区块链的公共性质(即交易细节是众所周知的),限制变量或函数的可见性并不能确保变量或函数是机密的。防止此漏洞的一种可能解决方案是使用加密技术,例如定时承诺[6]。

签名信息不足:当数字签名对多个交易有效时,就会发生此漏洞,当一个发件人(例如Alice)通过代理合约向多个收件人汇款(而不是发起多个交易)时,可能会发生此漏洞。此漏洞最初是在针对智能合约的重播攻击中利用的。通过在每条消息中合并适当的信息(例如现时值和时间戳)可以防止此漏洞。

具有不受限制的操作的DoS:此漏洞首先从Govern Mental合约中观察到[7]。

未经检查的呼叫返回值:此漏洞也称为处理错误的异常。它有两个变体,称为gas-less发送和unchecked发送。当不检查低级调用的返回值时会出现这种情况,即使函数调用抛出错误[8],执行也可能会继续。

未初始化的存储指针:回顾下,在Solidity中,合约状态变量始终从插槽0开始连续放置在存储中。对于复合局部变量(例如,struct,array或mapping),将引用分配给未占用的对象存储中的插槽以指向状态变量。

错误的构造函数名称:此漏洞最初是从Rubixi合约[9]中观察到的,该构造函数的名称不正确,它使任何人都可以成为合约的所有者。在Solidity 0.4.22版之前,声明与合约名称相同的函数被视为合约构造函数,该函数仅在创建合约时执行。 (责任编辑:admin)

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