值得关注的其他问题
尽管有一个安全问题排名很不错,但它往往一些有趣的细节,因为某些细节与排名列表并不完全一致。在深入挖掘10大问题之前,必要阐述一下原始研究中一些值得关注的亮点问题:
在2018年,最主要的两个问题是外部合约拒绝服务和重入。但是现在这些问题有所缓解。可以从我们的研究博客中了解更多有关Reentrancy的信息:从安全角度出发审视智能合约。
译者注:实际上由于DeFi应用之间的组合应用,又导致了多起严重的重入攻击事件。
现在Solidityv0.6.x发布了,它带来了许多重大变化,然而扫描的智能合约中有50%甚至还没有准备好使用Solidityv0.5.0编译器。另外30%智能合约使用了过时的语法,并且83%的合约在指定编译器版本存在规范问题。
Applied Digital宣布第三笔人工智能合同后股价飙升12%:金色财经报道,比特币挖矿和数据公司Applied Digital(APLD)的股价周五飙升12%,截至发稿时交易价格为9.25美元。该公司早些时候宣布了人工智能(AI)领域的第三笔合同,根据新闻稿,Applied Digital将在其AI云服务中部署由惠普企业(HEP)设计的CrayXD超级计算机,这是由NVIDIA H100图形处理单元(GPU)构建的超级计算机,HPE CrayXD将增强Applied Digital的人工智能云服务,并有效支持人工智能、机器学习、渲染以及涉及数字建模和仿真的HPC(高性能计算)任务等关键工作负载。Applied Digital迄今为止已宣布两项AI负载托管交易,这些交易可能在未来36个月内带来高达6.4亿美元的收入。[2023/7/1 22:11:50]
译者注:Solidity0.6在语义上更明确了,有助于编译器及时发现问题,让代码更安全,
Cardano生态DEX AdaSwap完成智能合约审计:12月9日消息,Cardano生态DEX AdaSwap在社交媒体发文宣布,网络安全机构Zokyo已对其智能合约完成了“全面”审计,这也是该去中心化交易平台在主网上线后的“最后一个里程碑”并将为DeFi社区提供最高标准安全保障。此外,AdaSwap还宣布已完成对以太坊Layer 2扩展系统Arbitrum的桥接支持。[2022/12/9 21:32:17]
尽管可见性问题没有出现在2018年的前10位,也没有出现今年的前10,但可见性问题增加了48%,值得关注。
下表比较了2018年和2020年十大常见问题列表之间的变化。这些问题按严重程度和流行程度排序:
1.未检查的外部调用
在2018年Solidity十大安全问题榜单上未检查的外部调用是第三个常见问题。由于现在前两个解决了,因此未检查的外部调用成为了2020年更新列表中最常见的问题。
Yuga Labs元宇宙项目Otherside高铸币成本或因未优化智能合约代码导致:金色财经报道,据 cryptobriefing 披露,Yuga Labs元宇宙项目Otherside高铸币成本或因未优化智能合约代码导致。Hungry Wolves NFT 联合创始人、BYAC #3987 持有人 Adam Hollander 指出,Yuga Labs 将责任归咎于以太坊,但其实他们应该优化合约,为满足 KYC 要求的人提供铸币窗口,让他们有足够的时间和保证完成铸币。律动此前报道, Otherside在虚拟地块 Otherdeed 销售活动中的5.5万枚NFT铸造公消耗了60234 ETH(约合 1.65 亿美元),而另外1.5万笔失败交易也导致用户损失了价值超过440万美元的ETH。[2022/5/2 2:45:40]
Solidity底层调用方法,(例如
address.call()
)不会抛出异常。而是在遇到错误,返回
声音 | 智能合约先驱尼克·萨博:比特币是一种自然权利:推特用户@danheld称,用比特币自由交易是一种人权。智能合约先驱尼克·萨博(Nick Szabo)在推特上回应称,关于比特币最恰当的表达,我认为这是一种自然权利,其通过计算机语言赋予,是一种抗审查协议。[2019/9/15]
false
。
而如果使用合约调用
ExternalContract.doSomething()
时,如果
doSomething()
抛出异常,则异常会继续「冒泡」传播。
应该通过检查返回值来显式处理不成功的情况,以下使用
addr.send()
进行以太币转账是一个很好的例子,这对于其他外部调用也有效。
if(!addr.send(1)){revert(。
声音 | 绿洲实验室创始人宋晓冬:智能合约可为企业提供有效的欺诈监测的模型:绿洲实验室(Oasis Labs)创始人兼首席执行官宋晓冬近日称,企业往往对于欺诈监测有一定的需求。一般来说,企业应用方提供越多的数据,对于欺诈的监测便会越精准。但是由于现实原因,很多数据无法共享,欺诈监测便会陷入困境。但是通过智能合同的应用,把数据放在不同的数据集里使用,通过不同的数据源建立模型,便可以提供更为有效的欺诈监测的模型。[2018/11/20]
2.高成本循环
高成本循环从Solidity安全榜单的第四名上升至第二名。受该问题影响的智能合约数量增长了近30%。
大家都知道,以太坊上的运算是需要付费的。因此,减少完成操作所需的计算,不仅仅是优化问题,还涉及到成本费用。
循环是一个昂贵的操作,这里有一个很好的例子:数组中包含的元素越多,就需要更多迭代才能完成循环。最终,无限循环会耗尽所有可用GAS。
for(uint256i=0;i<elements.length;i++){//dosomething}
如果攻击者能够影响元素数组的长度,则上述代码将导致拒绝服务(执行无法跳出循环)。而在扫描的智能合约中发现有8%的合约存在数组长度操纵问题。
3.权力过大的所有者
这是Soldiity十大安全问题新出现的问题,该问题影响了约16%的合约,某些合约与其所有者紧密相关,某些函数只能由所有者地址调用,如下例所示:
只有合约所有者能够调用
doSomething()和doSomethingElse()
函数:前者使用onlyOwner修饰器,而后者则显式执行该修饰器。这带来了严重的风险:如果所有者的私钥遭到泄露,则攻击者可以控制该合约。
4.算术精度问题
由于使用256位虚拟机,Solidity的数据类型有些复杂。Solidity不提供浮点运算,并且少于32个字节的数据类型将被打包到同一个32字节的槽位中。考虑到这一点,你应该预见以下程序精度问题:
functioncalculateBonus(uintamount)returns(uint){returnamount/DELIMITER*BONUS;}
如上例所示,在乘法之前执行的除法,可能会有巨大的舍入误差。
5.依赖tx.origin
6.溢出
Solidity的256位虚拟机存在上溢出和下溢出问题,这里有具体的分析。在
for
循环条件中使用
uint
数据类型时,开发人员要格外小心,因为它可能导致无限循环:
7.不安全的类型推导
该问题在Solidity十大安全问题排行榜中上升了两位,现在影响到的智能合约比之前多了17%以上。
8.不正确的转账
此问题在Solidity十大安全问题榜单中从第六位下降到第八位,目前影响不到1%的智能合约。
9.循环内转帐
当在循环体中进行以太币转账时,如果其中一个转账失败,那么整个交易将被回滚。
for(uinti=0;i<users.lenghth;i++){users.transfer(amount);}
在这个例子中,攻击者可能利用此行为来进行拒绝服务攻击,从而阻止其他用户接收以太币。
10.时间戳依赖
如果你的应用需要随机性,可以参考RANDAO合约,该合约基于任何人都可以参与的去中心化自治组织,是所有参与者共同生成的随机数。
总结
比较2018年和2020年十大常见问题时,我们可以观察到开发最佳实践的一些进展,尤其是那些影响安全性的实践。看到2018年排名前2位的问题:外部合约拒绝服务和重入,已经不再榜单了,这是一个积极的信号,但仍然需要采取措施来避免这类常见错误。
请记住,智能合约在设计上是不可变的,这意味着一旦创建,就无法修补源代码。这对安全性构成了巨大挑战,开发人员应利用可用的安全测试工具来确保在部署之前对源代码进行了充分的测试和审核。
Solidity是一种非常新且仍在成熟的编程语言,Solidityv0.6.0引入了一些重大更改,并且预计在以后的版本中还会有更多更改。
根据3月13日发布的官方声明,泰国证券交易所计划在2020年推出其数字资产平台。根据最近的报告据称揭示了这些计划,SET已确认将建立一个数字资产平台,作为其2019年至2021年三年战略计划的一.
1900/1/1 0:00:00据Coindesk1月9日报道,欧洲两大监管机构相继呼吁要在欧盟层面制定加密货币和ICO的监管规则.
1900/1/1 0:00:00BitMEX首席执行官ArthurHayes表示,明年比特币的波动范围可能很大。他认为,比特币可能会跌至3000美元,并在2020年上涨至20000美元,具体取决于BTC矿工和法定货币的表现.
1900/1/1 0:00:00根据加密金融会议分析师7月27日与Cointelegraph分享的数据,根据他们的投资回报对2017年十大加密交易的研究显示,平均每人回报超过136,000%.
1900/1/1 0:00:00据昨日动区报导,市场上最主流的稳定币Tether由于「可能发生的市场操控」,在比特币大涨同时也同时被抛售。各大交易所也因为USDT的「状况」而陆续发生交易对的不顺畅.
1900/1/1 0:00:002019年3月22日,推特分析师PlanB发表了《用稀缺性为比特币价格建模》一文。自S2F模型发布两年多以来,比特币价格一直以较高的精确度跟踪着模型的预测价格.
1900/1/1 0:00:00