金色百科 | 什麼是智能合約中的重入攻擊?

作者:Jagjit Singh,CoinTelegraph;編譯:五銖,比特鏈視界

一、智能合約中的潛在漏洞

儘管智能合約具有開創性,但它也並非不受惡意方可能利用的缺陷的影響。

輸入驗證不足是一個普遍的弱點,使攻擊者能夠通過提供意外的輸入來影響合約的執行。 此外,業務邏輯的不當應用可能會在合同中產生意外行為或邏輯差距,從而導致漏洞。 此外,如果處理不當,不安全的外部調用(例如涉及與外部數據源或其他合約的接口的調用)可能會造成漏洞。

重入攻擊是一個合約在完成其自身狀態更改之前從外部調用另一個合約時發生的弱點。 這允許被調用合約重新進入調用合約,並可能再次執行其某些操作。 這可能會導致意外的行為,並允許攻擊者改變合約的狀態,從而耗盡資金或產生其他負面影響。

考慮到此類攻擊的可能性,開發人員在使用外部合約或數據源時也應謹慎行事,確保正確處理外部調用,以避免意外行為和漏洞。 他們可以通過密切關注智能合約測試等安全程序來幫助保護智能合約免受不斷變化的威脅。

二、什麼是智能合約中的重入攻擊?

在智能合約中,當合約在完成自己的狀態更改之前從外部調用另一個合約或函數時,就會發生重入攻擊。

這允許被調用合約重新進入調用合約,並可能再次執行其部分操作,這可能會導致不可預見且頻繁的惡意行為。 例如,合約 A 調用合約 B 發送資金,然後修改自己的狀態。

合約 B 的代碼可能包含一個回調函數,允許其重新進入合約 A,並可能在合約 A 完成其狀態更改之前重新執行傳輸函數。 這將使攻擊者能夠在完成初始交易之前多次從合約中獲取資金。

2016 年臭名昭著的以太坊區塊鏈上的去中心化自治組織 (DAO) 黑客攻擊是另一個眾所周知的例子。 攻擊者利用智能合約代碼中的重入缺陷,遞歸地從 DAO 中刪除資金,最終導致價值數百萬美元的以太坊 (ETH) 被盜。

EiymS447vnByLHL4qydUxD2f2KyelWzur5p7lcp0.jpeg

此外,包括 Uniswap、Lendf.Me、BurgerSwap、SURGEBNB、Cream Finance 和 Siren Protocol 在內的多個去中心化金融 (DeFi) 協議由於可重入漏洞而蒙受了重大財務損失。 這些違規行為造成了 350 萬美元至 2500 萬美元的損失,凸顯了 DeFi 領域可重入漏洞帶來的持續威脅。

三、重入攻擊如何工作

重入攻擊利用智能合約函數的順序執行和外部調用形成一個循環,攻擊者可以在完成之前多次執行特定函數,這可能會導致惡意行為和未經批准的資金提取。

在受害者完成狀態修改之前,攻擊者的合約有效地「欺騙」受害者的合約回調攻擊者的合約。 此操作可能會導致反覆提款或其他疏忽行為。

0ak1IuK14XEEWGu1ziVXMteeNxNoDdyzYIKmjkxw.jpeg

上圖演示了對智能合約的重入攻擊。 攻擊者的合約調用受害者的「withdraw()」函數,該函數在更新餘額之前發送以太坊。 然後,攻擊者的後備函數被觸發,再次遞歸調用withdraw()以從受害者合約中耗盡資金。 這種攻擊利用了受害者在發送資金之前未能更新餘額的情況。

讓我們使用一個簡化的示例來分解重入攻擊的工作原理:

具有「提現」功能的智能合約

假設有一個允許用戶提取資金的數字錢包智能合約。 除了跟蹤用戶餘額之外,該合約還具有提款功能,方便資金提取。 提款功能通常允許用戶將他們的代幣或以太坊從智能合約提取到他們的個人錢包。

用戶交互和功能執行

用戶自行請求從錢包中提款。 他們使用提款功能輸入所需的提款金額。

提款函數會在調用時驗證用戶是否有足夠的資金進行提款。 如果滿足要求,它將所需的資金轉移到用戶選擇的地址。

外部調用

這就是弱點顯現出來的地方。 在提款反映在用戶的餘額中之前,合約會對另一個合約或帳戶進行外部調用。

遞歸調用

如果外部合約的代碼包含可以再次調用原始合約的函數(例如另一個提款函數),則會創建一個遞歸循環。 這使得可以在完成之前再次調用withdraw方法。

可重入利用

然後,攻擊者使用惡意合約來利用此循環。 攻擊者合約在錢包合約調用外部合約期間,在餘額更新之前,快速再次調用錢包的提現函數。

回退功能

在某些情況下,智能合約的回退功能(一種獨特的功能,當合約收到沒有任何數據或以太坊的調用時啟動)可能會被攻擊者使用。 重入攻擊可以通過在資金仍在處理過程中重複調用回退函數來進行。

操縱和反覆提款

攻擊者的合約可以在同一筆交易中重複使用提款功能,因為錢包合約會延遲更新餘額,直到收到外部調用後。 因此,這使得資金更容易在未經授權的情況下被取出,從而使攻擊者能夠竊取超出其合法權利的資金。 隨後,它給錢包合約的用戶造成了巨大的經濟損失。

四、重入攻擊的後果

重入攻擊會對智能合約用戶產生嚴重影響,因為它們有可能造成重大財務損失。

重入攻擊最直接的後果之一是未經授權提取或操縱易受影響的智能合約中保存的現金。 攻擊者利用該漏洞反覆從合約中提取資金,耗盡合約餘額,並可能給在受影響合約中投資或存儲資產的用戶造成重大財務損失。

此外,重入攻擊可能會削弱用戶對智能合約和區塊鏈技術安全性和完整性的信心。 重入漏洞可能會產生災難性的影響,2016 年以太坊區塊鏈上的 DAO 黑客事件等備受矚目的事件就證明了這一點,該事件造成了巨大的經濟損失並損害了社區的聲譽。

除了短期財務後果之外,重入攻擊還可能產生長期影響,例如監管和法律關注、投資者信任度下降以及對區塊鏈平臺和項目聲譽的損害。 容易受到攻擊的認知可能會導致用戶在與智能合約交互或投資去中心化應用程式(DApp)時保持謹慎,從而阻礙區塊鏈技術的採用和擴展。

五、如何減輕重入攻擊

在智能合約創建和審計方面實施最佳實踐對於減輕重入威脅是必要的。

這包括使用具有安全記錄的知名代碼庫,這是實現這一目標的一種方法。 這些庫經過了廣泛的測試和同行評審,這降低了引入漏洞的機會。

開發人員還應該使用「檢查-效果-交互」設計等安全檢查,通過確保狀態修改以原子方式發生,最大限度地減少重入攻擊的機會。 如果可用的話,可以使用可重入安全的智能合約開發框架來添加針對此類漏洞的額外防線。

開發人員不太可能手動添加安全保護,因為這些框架通常包含專門設計用於避免重入攻擊的內置方法和保護措施。 然而,由於區塊鏈安全仍在發展,開發人員必須繼續尋找新的威脅和弱點。

  • Related Posts

    金色百科 | 貿易戰是如何影響股票和加密市場的?

    作者:Bradley Peak,CoinTelegraph;…

    金色百科 | BTC是貿易戰期間的避風港嗎?

    來源:CoinTelegraph;編譯:白水,比特鏈視界 一…

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

    You Missed

    歷史性轉折:比特幣正在成為避險資產

    • By jakiro
    • 19 4 月, 2025
    • 3 views
    歷史性轉折:比特幣正在成為避險資產

    是什麼讓加密貨幣rug pull事件頻發?

    • By jakiro
    • 18 4 月, 2025
    • 8 views
    是什麼讓加密貨幣rug pull事件頻發?

    Wintermute Ventures:我們為什麼投資Euler?

    • By jakiro
    • 18 4 月, 2025
    • 8 views
    Wintermute Ventures:我們為什麼投資Euler?

    川普可以將鮑威爾炒魷魚嗎?會帶來什麼經濟風險?

    • By jakiro
    • 18 4 月, 2025
    • 10 views
    川普可以將鮑威爾炒魷魚嗎?會帶來什麼經濟風險?

    Glassnode:我們正在經歷牛熊轉換嗎?

    • By jakiro
    • 18 4 月, 2025
    • 7 views
    Glassnode:我們正在經歷牛熊轉換嗎?

    The Post Web加速器首批8個入選項目速覽

    • By jakiro
    • 17 4 月, 2025
    • 11 views
    The Post Web加速器首批8個入選項目速覽
    Home
    News
    School
    Search