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

我的网站

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

智能合约开发必读:这 10 个 Solidity 安全问题不容忽视

时间:2020-07-07 18:01来源:未知 作者:admin 点击:
智能合约安全堪忧,了解 2020 年 Solidity 常见的 10 个安全问题。 原文标题:《Solidity 十大常见安全问题》 撰文:Erez Yalon 翻译:登链社区 在 2018 年,我们(CheckMarx)曾对智能合约安全状

  智能合约安全堪忧,了解 2020 年 Solidity 常见的 10 个安全问题。

  原文标题:《Solidity 十大常见安全问题》

  撰文:Erez Yalon

  翻译:登链社区

  在 2018 年,我们(CheckMarx)曾对智能合约安全状况进行过初步研究,重点是 Solidity[1] 编写的智能合约。当时,我们根据公开的合约源代码(译者注:本文称之为已扫描合约,本文出现的 x% 是以此为基数)编写了最常见的 10 个智能合约安全问题。两年过去了该更新研究并评估智能合约安全性发展的如何了。

  值得关注的其他问题

  尽管有一个安全问题排名很不错,但它往往一些有趣的细节,因为某些细节与排名列表并不完全一致。在深入挖掘 10 大问题之前,必要阐述一下原始研究中一些值得关注的亮点问题:

  在 2018 年,最主要的两个问题是外部合约拒绝服务重入。但是现在这些问题有所缓解(不过依旧值得关注)。可以从我们的研究博客中了解更多有关 Reentrancy 的信息:从安全角度出发审视智能合约 [2]。

  译者注:实际上由于 DeFi 应用之间的组合应用(例如闪电贷),又导致了多起严重的重入攻击事件。

  现在 Solidity v0.6.x 发布 [3] 了,它带来了许多重大变化 [4],然而扫描的智能合约中有 50%甚至还没有准备好使用 Solidity v0.5.0 编译器。另外 30% 智能合约使用了过时的语法(例如:使用 sha3、throw 、constant 等),并且 83%的合约在指定编译器版本存在规范问题(pragma)。

  译者注:Solidity 0.6 在语义上更明确了(例如 0.6 版本在继承方面的升级 [5]),有助于编译器及时发现问题,让代码更安全,

  尽管可见性问题 [6] 没有出现在 2018 年的前 10 位,也没有出现今年的前 10,但可见性问题增加了 48%,值得关注。

  下表比较了 2018 年和 2020 年十大常见问题列表之间的变化。这些问题按严重程度和流行程度排序:

  1. 未检查的外部调用

  在 2018 年 Solidity 十大安全问题榜单上未检查的外部调用是第三个常见问题。由于现在前两个解决了, 因此未检查的外部调用成为了 2020 年更新列表中最常见的问题。

  Solidity 底层调用方法,(例如 address.call()) 不会抛出异常。而是在遇到错误,返回 false。

  而如果使用合约调用 ExternalContract.doSomething() 时,如果 doSomething() 抛出异常,则异常会继续「冒泡」传播。

  应该通过检查返回值来显式处理不成功的情况,以下使用 (责任编辑:admin1)

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