以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads
首頁 > BTC > Info

智能合約中的重入攻擊_SIU

Author:

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

智能合約是一種旨在以信息化方式傳播、驗證或執行合同的計算機協議。智能合約允許在沒有第三方的情況下進行可信交易,這些交易可追蹤且不可逆轉。智能合約概念于1995年由NickSzabo首次提出。智能合約的目的是提供優于傳統合約的安全方法,并減少與合約相關的其他交易成本。

漏洞概述:

因為以太坊智能合約中是可以調用外部的合約代碼,外部合約可能是攻擊者構造的惡意不安全的合約代碼,當在轉賬操作時執行代碼,迫使攻擊的合約回調包括自身的代碼,和繞過源代碼的限制發生了重入攻擊事件。

發生重入攻擊漏洞有兩個原因:

薩爾瓦多立法者通過包括人工智能企業在內的科技減稅法案:4月19日消息,薩爾瓦多執政黨議員周二晚間通過一項法案,以取消對開發人工智能和其他計算機編程工作的公司的稅收,為期15年,以使該國成為更具吸引力的科技目的地。技術減稅得到了總統Nayib Bukele的支持,他于上月底首次肯定了這項立法。Bukele的New Ideas Party在國會中占主導地位。該法案免除了符合條件的公司的所得稅、資本利得稅和地方政府稅收,以及科技企業所需的進口商品關稅。

在84名議員組成的一院制立法機構中,議員們以69票贊成通過了這項法案。New Ideas Party議員Rodrigo Ayala在辯論中說,有了這些豁免,我們正在促進我國科技部門和制造業的發展,這將有助于一個新產業的出現。(路透社)[2023/4/19 14:14:01]

1.?調用了外面不安全的合約代碼

Paxful CEO:將向在Celsius Earn中損失資金的Paxful用戶進行退款:3月30日消息,比特幣P2P市場Paxful首席執行官兼聯合創始人Ray Youssef在推特上表示,其承諾將向在Celsius Earn中損失資金的Paxful用戶進行退款。本周晚些時候,用戶的Celsius資金將可以在其Paxful錢包中使用。

Youssef解釋稱:“去年,Celsius宣布他們申請破產,因此,用戶無法在Paxful Earn中獲取資金。Paxful和其他許多人一樣,因為我們無法取回Celsius持有的資金而無法行動。另一個打擊是,法院裁定Celsius Earn賬戶屬于Celsius的破產財產,而不是其用戶。我們對這一事很不舒服,比特幣是一種財富保值工具,對許多人來說,這是他們未來所依賴的錢。為了得到用戶信任,我們采取了該行動。”[2023/3/30 13:34:23]

2.?外部合約的函數早于狀態變量的修改

Solidity編譯器發布0.8.19版本,引入用戶定義值類型定義運算符:2月23日消息,以太坊編程語言 Solidity 推出 Solidity 編譯器 0.8.19 版本,最新版本包括一系列改進,以及引入用戶定義值類型定義運算符,防止運行時字節碼中的死代碼。@sifislag 報告的內部庫函數和通過模塊調用的自由函數的問題已在此版本中得到修復。團隊建議使用低于 0.8.0 的 Solidity 版本的用戶進行升級。[2023/2/23 12:25:32]

美財長耶倫就穩定幣風險與政府機構會面:7月1日消息,美國財長耶倫就穩定幣風險與政府機構會面,敦促將穩定幣納入聯邦監管框架。(金十)[2022/7/1 1:43:11]

漏洞分析:

看withdraw函數,我們可以看到它接收了一個_amount參數,將其與發送者的balance進行比較,不超過發送者的balance就將這些_amount發送給sender,同時我們注意到這里它用來發送ether的函數是call.value,發送完成后,它才在下面更新了sender的balances,這里就是可重入攻擊的關鍵所在了,因為該函數在發送ether后才更新余額,所以我們可以想辦法讓它卡在call.value這里不斷給我們發送ether,同樣利用的是我們熟悉的fallback函數來實現。

當然,這里還有另外一個關鍵的地方——call.value函數特性,當我們使用call.value()來調用代碼時,執行的代碼會被賦予賬戶所有可用的gas,這樣就能保證我們的fallback函數能被順利執行,對應的,如果我們使用transfer和send函數來發送時,代碼可用的gas僅有2300而已,這點gas可能僅僅只夠捕獲一個event,所以也將無法進行可重入攻擊,因為send本來就是transfer的底層實現,所以他兩性質也差不多。

2016年6月以太幣組織TheDAO被攻擊,攻擊者利用兩個代碼漏洞創建子合約提取了360萬個以太幣。接下來我們簡單說一下這個事件

攻擊者利用the?DAO函數智能合約中splitDAO()函數,重復對DAO資產進行重入攻擊,不斷從項目的資產里面分離出DAO資產并轉移到自己的賬戶中

1.?創建錢包,調用splitDAO函數

2.?創建一個分割提案到一個新的錢包地址

3.?等待再調用splitDAO函數

4.?成功獲取了ether

?解決方法:

1.?使用其他轉賬函數

進行以太坊轉賬時發送給外部地址時使用Solidity的內置函數,這將不足以調用另一份合約.

2.?先修改狀態變量

這種方式就是確保狀態變量的修改要早于轉賬操作,即Solidity官方推薦的檢查-生效-交互模式(checks-effects-interactions)。

1.?使用互斥鎖

互斥鎖就是添加一個在代碼執行過程中鎖定合約的狀態變量以防止重入攻擊。

2.?使用OpenZeppelin官方庫

OpenZeppelin官方庫中有一個專門針對重入攻擊的安全合約

??本文作者:權星實驗室團隊

來源:金色財經

Tags:SIUAXFDAOELSSIU2022axfundsAnteDAOCryptoVoxels

BTC
加密VC一覽:誰在品牌賦能,誰在提供價值增值?_TAL

撰文:DylanOliviaHunzeker 編譯:TechFlow 加密風險投資在外界看來往往顯得很模糊,而且很多人認為它是加密空間中最具競爭力和最殘酷的分支之一.

1900/1/1 0:00:00
加密騙局防不勝防,小心指南請查收_ENT

標題|干貨分享|年關將近,加密版「百世可樂」「王仔牛奶」已上架,解鎖反釣魚新姿勢!商紂王暴虐,周文王決心推翻暴政。太公姜子牙受命下界幫助文王.

1900/1/1 0:00:00
OpenSea挑戰者揭竿而起 簡單三步埋伏Zora空投_NFT

繼LooksRare之后,誰是OpenSea的下一個挑戰者?頂級機構Paradigm投資的Zora是一個不容忽視的存在,原因主要有兩點:1.股東背景豪華.

1900/1/1 0:00:00
Project Galaxy如何解決當前憑證系統問題?_ALA

自我們于2021年5月啟動ProjectGalaxy以來已經快9個月了。過去9個月非常瘋狂,我們取得的成就遠遠超出了我們的預期。在此期間,我們擁有來自6個不同區塊鏈生態系統的15萬唯一鏈上用戶.

1900/1/1 0:00:00
ENERGY GUARDIAN,開啟Gamefi新時代_ENERGY

這是一個最好的時代,這是一個最壞的時代;這是一個智慧的年代,這是一個愚蠢的年代;這是一個光明的季節,這是一個黑暗的季節;這是希望之春,這是失望之冬;人們面前應有盡有.

1900/1/1 0:00:00
晚間必讀5篇 | 美聯儲會議召開在即 為什么市場以大跌相迎?_WEB

1.V神:通往單槽最終確認的路徑本文為V神2022年1月25日在ethereum.org上發表的文章.

1900/1/1 0:00:00
ads