比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > XMR > Info

智能合約開發必讀:這10個Solidity安全問題不容忽視,防失業_GAS

Author:

Time:1900/1/1 0:00:00

值得關注的其他問題

盡管有一個安全問題排名很不錯,但它往往一些有趣的細節,因為某些細節與排名列表并不完全一致。在深入挖掘10大問題之前,必要闡述一下原始研究中一些值得關注的亮點問題:

在2018年,最主要的兩個問題是外部合約拒絕服務和重入。但是現在這些問題有所緩解。可以從我們的研究博客中了解更多有關Reentrancy的信息:從安全角度出發審視智能合約。

譯者注:實際上由于DeFi應用之間的組合應用,又導致了多起嚴重的重入攻擊事件。

現在Solidityv0.6.x發布了,它帶來了許多重大變化,然而掃描的智能合約中有50%甚至還沒有準備好使用Solidityv0.5.0編譯器。另外30%智能合約使用了過時的語法,并且83%的合約在指定編譯器版本存在規范問題。

Coinbase:L2網絡Base測試網上部署5.5萬個智能合約:金色財經報道,Coinbase發布Layer 2網絡Base進展,超1.8萬名開發人員在第一周在Base測試網上發布了5.5萬個智能合約部署;與Zora合作發布的Base,Introduced NFT第一周的鑄造數量達到48.5萬。[2023/3/17 13:09:37]

譯者注:Solidity0.6在語義上更明確了,有助于編譯器及時發現問題,讓代碼更安全,

盡管可見性問題沒有出現在2018年的前10位,也沒有出現今年的前10,但可見性問題增加了48%,值得關注。

下表比較了2018年和2020年十大常見問題列表之間的變化。這些問題按嚴重程度和流行程度排序:

1.未檢查的外部調用

QANplatform橋智能合約遭到攻擊,建議不要執行QANX代幣相關交易:10月11日消息,抗量子計算攻擊的Layer1區塊鏈QANplatform發推稱,其橋智能合約遭到攻擊,攻擊者設法提取了代幣,提醒用戶不要執行任何與QANX代幣相關的交易。目前團隊正在調查問題。目前 QANX 價格短線跳水跌超 90%。[2022/10/11 10:30:53]

在2018年Solidity十大安全問題榜單上未檢查的外部調用是第三個常見問題。由于現在前兩個解決了,因此未檢查的外部調用成為了2020年更新列表中最常見的問題。

Solidity底層調用方法,(例如

address.call()

)不會拋出異常。而是在遇到錯誤,返回

false

而如果使用合約調用

ExternalContract.doSomething()

Chainlink推出新社區資助計劃以推動智能合約采用:金色財經報道,Chainlink(LINK)最近推出了一項新的社區資助計劃,旨在使智能合約成為“數字協議的主要形式”。[2020/8/5]

時,如果

doSomething()

拋出異常,則異常會繼續「冒泡」傳播。

應該通過檢查返回值來顯式處理不成功的情況,以下使用

addr.send()

進行以太幣轉賬是一個很好的例子,這對于其他外部調用也有效。

if(!addr.send(1)){revert(。

2.高成本循環

高成本循環從Solidity安全榜單的第四名上升至第二名。受該問題影響的智能合約數量增長了近30%。

大家都知道,以太坊上的運算是需要付費的。因此,減少完成操作所需的計算,不僅僅是優化問題,還涉及到成本費用。

動態 | Cobbs Allen合作Data Gumb 為其智能合約提供保險:伯明翰風險管理機構Cobbs Allen已與總部位于休斯頓的區塊鏈公司Data Gumbo達成合作,為其區塊鏈智能合約提供保險。(Birmingham Business Journal)[2019/12/27]

循環是一個昂貴的操作,這里有一個很好的例子:數組中包含的元素越多,就需要更多迭代才能完成循環。最終,無限循環會耗盡所有可用GAS。

for(uint256i=0;i<elements.length;i++){//dosomething}

如果攻擊者能夠影響元素數組的長度,則上述代碼將導致拒絕服務(執行無法跳出循環)。而在掃描的智能合約中發現有8%的合約存在數組長度操縱問題。

3.權力過大的所有者

這是Soldiity十大安全問題新出現的問題,該問題影響了約16%的合約,某些合約與其所有者緊密相關,某些函數只能由所有者地址調用,如下例所示:

動態 | EOS紐約提出解決EOS代幣智能合約和EOS核心開發資金的提案:據引力觀察報道,超級節點EOS紐約提出解決EOS代幣智能合約和EOS核心開發資金的提案。 該提案的思想指出:提供一個結構化的、可擴展的系統,允許DApp開發人員使用eosio.token系統合約部署代幣。這也將對單一私鑰對的信任轉移到了對15/21節點的信任。這意味著DApp的代幣將與EOS主網的代幣一樣安全。 在eosio.token下創建和發行代幣是DApp項目的一個高級的差異化功能。這樣,開發人員可以提出如下聲明:我們代幣的完整性(安全性)水平與EOS主網代幣一樣。 此外,提案建議:建立一個資金池,用來給改進EOS核心功能的開源開發項目提供資金,同時保證這些資金來自于自發的行動而不是通貨膨脹。 提案建議將拍賣代幣名字獲得的EOS代幣用于EOS的核心開發工作。有關核心開發內容的提案將通過eosio.forum公投系統提交。那些獲得15/21節點批準的提案將獲得資金資助。核心開發的門檻與維護EOS區塊鏈的門檻相同。[2019/4/24]

只有合約所有者能夠調用

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引入了一些重大更改,并且預計在以后的版本中還會有更多更改。

Tags:以太坊GASDAO以太坊幣是什么幣GAS幣是什么幣DAO幣DAO價格

XMR
保守傳統基金首次入場,兩個退休基金宣布參與區塊鏈風險投資基金_區塊鏈

兩個傳統退休基金在近日宣布涉足區塊鏈風險投資,這是該領域的首例。據美國費爾法克斯郡本周的新聞稿,該退休基金宣布投資區塊鏈市場,由專注于機構客戶和家族辦公室的資產管理公司MorganCreekDi.

1900/1/1 0:00:00
數據:比特幣價格突破9156美元,投資1萬至少獲得2400美元的利潤_CEO

比特幣較年初價格上漲近2000美元,MorganCreekDigital聯合創始人AnthonyPompliano表示,年初投資1萬美元比特幣的人將獲得2400美元的利潤.

1900/1/1 0:00:00
加密貨幣量化策略:獲取收益的四個步驟_Kryll

2月份,全棧Blockchain公司Cryptense推出了一個新的量化平臺,用于自動創建和執行加密貨幣交易策略:Kryll.io。該公司還提供了一個解釋器,說明如何使用其解決方案賺大錢.

1900/1/1 0:00:00
幣聰快訊:ShapeShift CEO:收集客戶身份證信息是“積極的”_加密貨幣

首席執行官兼創始人埃里克·沃里斯表示,加密貨幣交換ShapeShift有爭議的決定要求用戶身份并不是強制性的,而是標志著降低法律風險的“主動”步驟.

1900/1/1 0:00:00
以太坊聯合創始人對 MetaMask 新隱私政策爭議的回應_區塊鏈

Billions項目組 JosephLubin從技術手段上對MetaMask錢包更新政策的全貌進行了說明。MetaMask是一個基于以太坊區塊鏈的數字錢包,它是去中心化的和完全非托管的.

1900/1/1 0:00:00
幣聰:恒星幣預計到年底將達到0.41美元,能否破0.1121并繼續走高_XLM

最近發布的一份報告預測,2019年2月XLM將達到0.21美元,到2019年12月底市場將達到0.41美元.

1900/1/1 0:00:00
ads