值得關注的其他問題
盡管有一個安全問題排名很不錯,但它往往一些有趣的細節,因為某些細節與排名列表并不完全一致。在深入挖掘10大問題之前,必要闡述一下原始研究中一些值得關注的亮點問題:
在2018年,最主要的兩個問題是外部合約拒絕服務和重入。但是現在這些問題有所緩解。可以從我們的研究博客中了解更多有關Reentrancy的信息:從安全角度出發審視智能合約。
譯者注:實際上由于DeFi應用之間的組合應用,又導致了多起嚴重的重入攻擊事件。
現在Solidityv0.6.x發布了,它帶來了許多重大變化,然而掃描的智能合約中有50%甚至還沒有準備好使用Solidityv0.5.0編譯器。另外30%智能合約使用了過時的語法,并且83%的合約在指定編譯器版本存在規范問題。
神話起源CEO談毅:以太坊GAS和速度以及智能合約是未來突破的方向:金色財經現場報道,在8月8日由金色財經主辦的金色沙龍活動中,神話起源CEO談毅在主題《哪些Web3敘事將引領下輪牛市》的圓桌會議中表示,以太坊有三個大家可以關注的點,以及存在的核心價值。一個是GAS,一個是速度,一個是智能合約,這是以太坊做這么大的核心。換句話說,未來的突破也在這三個方向上。
以GAS和速度為例,一個是2.0的升級,今年下半年能不能如期推出,推出以后的效果,能不能像人們預期的那樣。這有可能是一下子給加密資產帶來一個新的臺階。做L2的團隊,也在L2層面上解決這個問題,一個是速度,一個是GAS。第三個是智能合約,以太坊就是行業標準。它從NFT開始,ERC-721以后,還有EIP-1159,今年好像也有新的智能合約的協議會提交出來做審核。所以如果從這三個點上突破的話,以太坊的價值和生態能進一步的擴大和提升。尤其是智能合約。今年可以看到有很多創新想法,隨著NFT往下發展,在用新的智能合約做,這都是以太坊可以關注的點。
此外,他還表示,游戲資產能天然跟區塊鏈做融合,既符合有非常大的資產價格波動性,又是可觸及的。通過可觸及的方式,讓更多的圈外人進來。[2023/8/8 21:32:31]
譯者注:Solidity0.6在語義上更明確了,有助于編譯器及時發現問題,讓代碼更安全,
DFI.money:所有YFII Vault V2產品均已通過第三方智能合約審計:DFI.money(原YFII)官方發推表示,所有YFII Vault V2產品均已通過第三方智能合約審計。[2020/9/27]
盡管可見性問題沒有出現在2018年的前10位,也沒有出現今年的前10,但可見性問題增加了48%,值得關注。
下表比較了2018年和2020年十大常見問題列表之間的變化。這些問題按嚴重程度和流行程度排序:
1.未檢查的外部調用
在2018年Solidity十大安全問題榜單上未檢查的外部調用是第三個常見問題。由于現在前兩個解決了,因此未檢查的外部調用成為了2020年更新列表中最常見的問題。
Solidity底層調用方法,(例如
白帽黑客從Lien Finance智能合約漏洞中解救出960萬美元:安全研究員和白帽黑客Sam Sun(又名Samczsun)發現一個脆弱的合約持有超過25000 ETH,當時價值超過960萬美元。Sun迅速意識到情況的嚴重性,開始深入研究,發現該合約是Lien Finance協議的一部分。9月15日,Sun等人從該智能合約中解救出960萬美元。9月22日,Lien宣布已獲知“BondMaker”程序中的bug。Lien表示在“救援”過程中沒有資金損失。(Cryptonews )[2020/9/26]
address.call()
)不會拋出異常。而是在遇到錯誤,返回
false
。
而如果使用合約調用
ExternalContract.doSomething()
時,如果
doSomething()
IOTA基金會高級開發人員:以太坊智能合約比IOTA更適合高價值轉移:IOTA基金會高級開發人員將以太坊與IOTA進行了比較,認為以太坊智能合約比IOTA更適合高價值轉移。他進一步指出,有些應用中以太坊智能合約比IOTA更適合,因為IOTA的靈活性在此類應用中成為劣勢。在以太坊這樣的合約中長期持有大筆資金比較安全。他指出,這樣的網絡可以讓你毫無畏懼地依賴它們。Hop表示,與其他區塊鏈同類產品相比,IOTA智能合約協議(ISCP)具有資源豐富、高效且高度靈活的特點。因此,相比之下,IOTA智能合約為更低的交易成本提供了空間。他還透露了IOTA將物聯網(IoT)用于記錄和執行交易的好處。Hop稱贊IOTA的巨大靈活性,同時指出IOTA的智能合約不僅有內置的虛擬機(VM),還允許準確處理SC代碼。這證實了IOTA將適用于未來實施的任何變更或擴展。[2020/5/10]
拋出異常,則異常會繼續「冒泡」傳播。
應該通過檢查返回值來顯式處理不成功的情況,以下使用
公告 | Taxa Network已通過區塊鏈安全公司CertiK智能合約安全審計:Taxa團隊宣布已通過區塊鏈安全公司CertiK智能合約的安全審計,這將確保Taxa主網在今年春天順利發布。CertiK的智能標簽對TXT智能合約源代碼進行了100%形式化驗證覆蓋,并輔以安全專家人工逐行審核。審計結果認為TXT智能合約結構堅固,不存在整數溢出、函數錯誤、緩沖區溢出等漏洞。[2020/2/13]
addr.send()
進行以太幣轉賬是一個很好的例子,這對于其他外部調用也有效。
if(!addr.send(1)){revert(。
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引入了一些重大更改,并且預計在以后的版本中還會有更多更改。
據數據顯示,今晨5點54分,比特幣在區塊高度610848處調整挖礦難度至13.80T,較12月20日上調6.57%,創歷史新高.
1900/1/1 0:00:00據幣coin數據顯示,過去24小時全網總計爆倉1,179.19萬美元,爆倉人數610人。其中OKEx爆倉613.84萬美元,Huobi爆倉32.26萬美元,BitMEX爆倉533.09萬美元.
1900/1/1 0:00:00在你的投資組合中配置10%的比特幣和沒有比特幣相比,會有什么樣不同的結果呢? 機構數字貨幣交易工具提供商TradeBlock在最近的一篇文章中回答了這個問題.
1900/1/1 0:00:00小探本期為大家帶來的內容主題是“美國SEC對NFT項目首次采取執法行動”歡迎大家關注小探,小探每天都會給您獻上關于幣圈的優質內容哦.
1900/1/1 0:00:00“一幣一別墅,一幣一嫩模”如果你身在幣圈,你一定聽過這句話,畢竟它曾是多少幣圈人民共同的追求和信仰。其中的“一幣一嫩模”的出處就是鼎鼎有名的——我的天.
1900/1/1 0:00:00BTC為代表的主流幣種短線快速反彈,過去三個交易日內熱力圖覆蓋到的幣種幾乎全部取得了超10%的階段漲幅,領漲的XLM、ETH以及EOS等幣種在該時段內普遍漲逾20%,主流幣種平均漲幅近15%.
1900/1/1 0:00:00