買比特幣 買比特幣
Ctrl+D 買比特幣
ads

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

Author:

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

值得關注的其他問題

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

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

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

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

楊海坡:智能合約就像現實世界的法人:ViaBTC礦池CEO楊海坡今日發布微博稱,智能合約就像現實世界的法人,很多場景和普通地址沒有區別,這個設計極大的豐富了其應用場景。[2020/8/23]

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

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

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

1.未檢查的外部調用

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

以太坊錢包Gnosis Safe Multisig推出智能合約交互功能:非托管以太坊錢包Gnosis Safe Multisig推出一個前端“智能合約交互(Contract Interaction)”功能,允許用戶直接與以太坊智能合約進行交互。Gnosis表示該功能旨在提高使用智能合約的靈活性,并允許以太坊智能合約和應用程序直接交互,并支持尚未添加到Gnosis界面中智能合約,例如用戶可以使用該功能與ENS交互并定義部分參數。Gnosis同時表示宣布推出桌面版錢包,并“增加額外的安全性”。[2020/5/20]

Solidity底層調用方法,(例如

address.call()

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

false

而如果使用合約調用

ExternalContract.doSomething()

時,如果

動態 | 以太坊伊斯坦布爾升級將破壞Aragon平臺的680份智能合約:以太坊的Ropsten測試網絡即將進行升級。盡管伊斯坦布爾升級最終應該會提高網絡效率,然而根據Aragon One首席技術官Jorge Izquierdo的說法,特別是對于治理平臺Aragon,代碼更改預計將破壞大約680個智能合約。這些智能合約通常管理著以太坊區塊鏈上運行的Dapps的治理。(CoinDesk)[2019/10/1]

doSomething()

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

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

addr.send()

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

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

2.高成本循環

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

現場 | Jonathan Meiri :區塊鏈和智能合約技術將幫助解決用戶數據監控等問題:金色財經現場報道,NEO DevCon 2019開發者大會今日在西雅圖舉行,Barrel Protocol 創始人、CEO Jonathan Meiri 做了以“基于智能合約的自動消費者數據”的演講。Jonathan Meiri 表示,擁有數據就擁有未來,個人數據已經成為數字時代最昂貴的商品。但人們經常擔心自己的數據如何被使用,越來越不相信科技公司,人們的數據被監控、被售出。區塊鏈和智能合約技術就是要讓人們確定自己的數據和身份被自己控制。目前數據市場的潛力巨大,他提出了融合隱私、身份、數據和變現的解決方案。[2019/2/18]

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

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

分析 | 中國信通院:圖靈完備和圖靈不完備的智能合約之間的區別:中國信息通信研究院與可信區塊鏈推進計劃共同組織編寫了《區塊鏈白皮書》(2018年),白皮書中表示,智能合約可分為圖靈完備和非圖靈完備。影響實現圖靈完備的常見原因包括:循環或遞歸受限、無法實現數組或更復雜的數據結構等。圖靈完備的智能合約有較強的適應性,可以對邏輯較復雜的業務操作進行編程,但有陷入死循環的可能。對比而言,圖靈不完備的智能合約不能進行復雜的邏輯操作,但更加簡單、高效、和安全。[2018/9/6]

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

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

酷幣交易所
以太坊:主流減產幣種迎來拉盤潮?大餅突破9600或許行情還能持續_比特幣

本周市場盛況空前,周二在BSV的帶領下主流減產幣種迎來一輪爆發潮,往日壓抑的氛圍一掃而光,做多的情緒在此以點帶面的擴散下最終刺激了市場的全面普漲.

1900/1/1 0:00:00
CRV:被盜近 6000萬、創始人買豪宅被控欺詐,Curve 還有救嗎?_CRV幣

小探本期為大家帶來的內容主題是“被盜近6000萬、創始人買豪宅被控欺詐,“水逆期”的Curve還有救嗎?”歡迎大家關注小探,小探每天都會給您獻上關于幣圈的優質內容哦.

1900/1/1 0:00:00
以太坊:以太坊是否會跌至 1750 美元水平?_ETH

小探本期為大家帶來的內容主題是“以太坊是否會跌至1750美元水平?”歡迎大家關注小探,小探每天都會給您獻上關于幣圈的優質內容哦.

1900/1/1 0:00:00
BTC:現在永久丟失的比特幣數量有多少?_btc錢包官網

小探本期為大家帶來的內容主題是“現在永久丟失的比特幣數量有多少?”歡迎大家關注小探,小探每天都會給您獻上關于幣圈的優質內容哦.

1900/1/1 0:00:00
SHIB:大家對柴犬的需求增加:SHIB 價格會受到影響嗎?_SHIB幣SHI價格

小探本期為大家帶來的內容主題是“大家對柴犬的需求增加:SHIB價格會受到影響嗎?”歡迎大家關注小探,小探每天都會給您獻上關于幣圈的優質內容哦.

1900/1/1 0:00:00
以太坊:VanEck 預計到 2030 年 ETH 在新估值模型中將達到 11,800 美元_加密貨幣

小探本期為大家帶來的內容主題是“VanEck預計到2030年ETH在新估值模型中將達到11,800美元”歡迎大家關注小探,小探每天都會給您獻上關于幣圈的優質內容哦.

1900/1/1 0:00:00
ads