比特幣行情 比特幣行情
Ctrl+D 比特幣行情
ads

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

Author:

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

值得關注的其他問題

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

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

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

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

歐盟委員會發布新數據法案相關提案,尋求加強對智能合約的控制:2月26日消息,歐盟委員會發布關于歐盟新數據法案的提案,其中一些關于智能合約的細則。該法案草案將智能合約定義為:“基于預先確定的條件執行和結算交易的電子分類賬上的計算機程序。它們有可能向數據持有者和數據接收者保證共享數據的條件得到遵守。”

法案第30條要求使用智能合約的應用程序應該增加終止功能:“確保存在終止繼續執行交易的機制:智能合約應包括可以重置或指示合約停止或中斷操作以避免未來(意外)執行的內部功能。”

專業人士指出,終止開關意味著單一來源能夠進行更改代碼,這在本質上威脅到了智能合約不可變性的承諾。(The Block)[2022/2/26 10:17:02]

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

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

Arcadia正在審計Value DeFi和Sentivate的FaaSPool智能合約:區塊鏈安全軟件開發公司Arcadia發推宣布,正在對Value DeFi協議和Sentivate的FaaSPool智能合約進行審計。據10月28日報道, Value DeFi協議在推特宣布,Arcadia Group已完成對Governance Vault v2的審計。[2020/11/1 11:22:18]

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

1.未檢查的外部調用

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

Casa聯合創始人評論Ocean暫停智能合約:權力下放面紗被揭開:對于Ocean Protocol(OCEAN)暫停OCEAN智能合約。加密貨幣托管公司Casa聯合創始人兼CTO Jameson Lopp在推特表示,當“DeFi”項目對被盜資金洗白而驚慌失措時,權力下放的面紗被揭開了。[2020/9/27]

Solidity底層調用方法,(例如

address.call()

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

false

而如果使用合約調用

ExternalContract.doSomething()

時,如果

doSomething()

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

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

動態 | 2019中國網絡誠信十大新聞出爐,區塊鏈智能合約司法應用上榜:12月2日消息,以“網聚誠信力量 共創信用中國”為主題的2019中國網絡誠信大會今日在古城西安舉行,會上發布了“2019中國網絡誠信十大新聞”的征集、評選結果。其中“首個區塊鏈智能合約司法應用上線,新技術構筑網絡誠信智能防線”新聞登上2019中國網絡誠信十大新聞名單。[2019/12/2]

addr.send()

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

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

2.高成本循環

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

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

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

現場 | 以太坊行業峰會第一場圓桌 如何應對智能合約安全問題:金色財經9月8日現場報道,Loi Luu (KyberNetwork 創始人)、Shawn Douglass

(Amberdata 聯合創始人兼CEO)、Jay Zhou (Loopring Protocol 聯合創始人)、Alan Li (FBG X 研發部負責人)、Antoine Cote (Enuma Technologies 聯合創始人兼CEO) 參與了討論,嘉賓們一致認為,由于智能合約涉及資產交易且不可篡改,一旦發生安全問題將引起資產嚴重受損,關注智能合約安全是必要的。Loi Luu指出,區塊鏈行業項目方,需要為開發者設立預警機制。開源代碼要引入第三方檢測,避免犯一些顯而易見的錯誤。

Jay zhou認為,需要更有經驗的開發者去開發用戶易用、以人為本的合約,同時也有必要引入交叉審計。

Shawn Douglass說:“因為智能合約的不可篡改性,在程序員開發前,就必須告知開發者未來可能造成的后果,特別是在涉及資產的領域必須確保事前萬無一失甚至考慮保險。”

Antoine Cote表示,可以在早期時候引入懸賞機制讓黑客或者社區成員共同發現漏洞。大家討論后得出共識,每一個開發者都必須在開發速度和安全性之間做一個平衡。在區塊鏈領域,注重安全和責任心是必須的。[2018/9/8]

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價格

酷幣下載
Polkadot:以太坊聯合創始人新項目Polkadot再次募資,金額高達6,000萬美元

據報導,區塊鏈項目「Polkadot」正在試著透過另一筆初始代幣發行募集高達「6,000萬美元」的資金.

1900/1/1 0:00:00
XTZ:幣聰:TezosXTZ驚現歷史最低價,能否守住0.35美元

Tezos是一個智能合約和分散式應用平臺,它利用類似于EOS或Lisk的委托證明治理模型,利益相關者獲得對各種協議投票的權利變化以及生態系統的治理方式.

1900/1/1 0:00:00
ASH:「BTC收割機5月12」BTC,EOS、ETH、BCH、XRP行情速遞

反彈行情,切勿過多迷戀。 一、BTC BTC當前價位8498,12小時級別壓力位8725支撐位8065 二、EOS EOS當前價位13.8,6小時級別壓力位14.92支撐位11.02-11.32.

1900/1/1 0:00:00
比特幣:觀點:比特幣會代替黃金成為未來的硬通貨?

硬通貨是在實際討論中使用的最著名的貨幣術語之一。從政策決策的論述到金融領域的評論辯論,這個詞的使用頻率之高,甚至連普通公民都對它耳熟能詳.

1900/1/1 0:00:00
區塊鏈:區塊鏈國際專利TOP 20:阿里、華為等5家中國公司進榜

零壹智庫發布的《全球區塊鏈專利報告》顯示,中國以12909件區塊鏈專利申請數量位居世界第一,占全球區塊鏈專利申請總數的53.6%;從數量來看,我國領先歐美等發達國家.

1900/1/1 0:00:00
BAT:Coinbase專業版宣布上架Basic Attention Token,價格應聲上漲

Coinbase的專業版交易平臺上架了支持瀏覽器「Brave」的原生代幣BasicAttentionToken.

1900/1/1 0:00:00
ads