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

我的网站

当前位置: 主页 > 竞争币 > 以太坊

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

时间:2021-03-08 14:54来源:未知 作者:admin 点击:
机密性失效:在区块链中,由于区块链的公共性质(即交易细节是众所周知的),限制变量或函数的可见性并不能确保变量或函数是机密的。 防止此漏洞

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

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

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

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

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

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

  • 类型转换:此漏洞最早在 [10] 中发现。以 Solidity 语言编写的合约可以通过直接引用被调用方合约的实例来调用另一个合约。

  • 过时的编译器版本:当合约使用过时的编译器时会发生,其中包含错误,因此使已编译的合约易受攻击。通过使用最新的编译器可以防止此漏洞。

  • 简短地址:此漏洞最早在 [11] 中实现,并进行了广泛讨论。

  • 以太币丢失给孤立地址:以太币失去到孤立发生在汇款时,以太坊仅检查接收者地址的长度不超过 160 位,而不检查接收者地址的有效性。 如果将钱发送到一个不存在的孤立地址,则以太坊会自动注册该地址,而不是终止交易。 由于该地址未与任何 EOA 或合约帐户相关联,因此没有人可以提取已转移的资金,这实际上是丢失的。 此漏洞是由 EVM 不能孤立保护引起的。 在撰写本文时,只能通过手动确保收件人地址的正确性来防止此漏洞。

  • 调用堆栈深度限制:此漏洞是由 EVM 的执行模型不足引起的,并且已被 EIP-150 的硬分叉所消除,该硬叉重新定义了外部调用的耗油量规则,使其不可能达到 1,024 in 调用堆栈深度。

  • 低估操作码:首先从两次 DoS 攻击中发现了此漏洞 [12] [13]。 (责任编辑:admin)

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