欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

當(dāng)前位置:主頁 > 區(qū)塊鏈 > 區(qū)塊鏈技術(shù) > 重入攻擊詳解

重入攻擊是什么?一文解讀智能合約中的重入攻擊

2024-05-17 11:25:50 | 來源: | 作者:佚名
重入攻擊詳解!以太坊智能合約開發(fā)中,重入攻擊是一種常見的 安全漏洞么,這種攻擊通常發(fā)生在合約的遞歸調(diào)用中,攻擊者通過構(gòu)造惡意交易,使得原本合約在執(zhí)行過程中不斷調(diào)用自身或其他合約,從而耗盡合約的Gas(交易費用),或者導(dǎo)致意外的狀態(tài)改變

 重入攻擊是什么?一文解讀智能合約中的重入攻擊!利用智能合約的可重入性,攻擊者反復(fù)進入合約并執(zhí)行惡意代碼。重入攻擊利用了合約執(zhí)行期間的狀態(tài)不一致,從而導(dǎo)致合約在執(zhí)行完攻擊者的代碼后仍然具有余額,攻擊者可以重復(fù)執(zhí)行攻擊并一直提取資金,最終導(dǎo)致合約的損失。

今天腳本之家小編給大家分享的是智能合約中的重入攻擊的詳細解讀,需要了解的朋友不要錯過哦!

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

盡管智能合約具有開創(chuàng)性,但它也并非不受惡意方可能利用的缺陷的影響。

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

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

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

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

在智能合約中,當(dāng)合約在完成自己的狀態(tài)更改之前從外部調(diào)用另一個合約或函數(shù)時,就會發(fā)生重入攻擊。

這允許被調(diào)用合約重新進入調(diào)用合約,并可能再次執(zhí)行其部分操作,這可能會導(dǎo)致不可預(yù)見且頻繁的惡意行為。 例如,合約 A 調(diào)用合約 B 發(fā)送資金,然后修改自己的狀態(tài)。

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

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

EiymS447vnByLHL4qydUxD2f2KyelWzur5p7lcp0.jpeg

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

三、重入攻擊如何工作

重入攻擊利用智能合約函數(shù)的順序執(zhí)行和外部調(diào)用形成一個循環(huán),攻擊者可以在完成之前多次執(zhí)行特定函數(shù),這可能會導(dǎo)致惡意行為和未經(jīng)批準的資金提取。

在受害者完成狀態(tài)修改之前,攻擊者的合約有效地“欺騙”受害者的合約回調(diào)攻擊者的合約。 此操作可能會導(dǎo)致反復(fù)提款或其他疏忽行為。

0ak1IuK14XEEWGu1ziVXMteeNxNoDdyzYIKmjkxw.jpeg

上圖演示了對智能合約的重入攻擊。 攻擊者的合約調(diào)用受害者的“withdraw()”函數(shù),該函數(shù)在更新余額之前發(fā)送以太坊。 然后,攻擊者的后備函數(shù)被觸發(fā),再次遞歸調(diào)用withdraw()以從受害者合約中耗盡資金。 這種攻擊利用了受害者在發(fā)送資金之前未能更新余額的情況。

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

具有“提現(xiàn)”功能的智能合約

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

用戶交互和功能執(zhí)行

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

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

外部調(diào)用

這就是弱點顯現(xiàn)出來的地方。 在提款反映在用戶的余額中之前,合約會對另一個合約或賬戶進行外部調(diào)用。

遞歸調(diào)用

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

可重入利用

然后,攻擊者使用惡意合約來利用此循環(huán)。 攻擊者合約在錢包合約調(diào)用外部合約期間,在余額更新之前,快速再次調(diào)用錢包的提現(xiàn)函數(shù)。

回退功能

在某些情況下,智能合約的回退功能(一種獨特的功能,當(dāng)合約收到?jīng)]有任何數(shù)據(jù)或以太坊的調(diào)用時啟動)可能會被攻擊者使用。 重入攻擊可以通過在資金仍在處理過程中重復(fù)調(diào)用回退函數(shù)來進行。

操縱和反復(fù)提款

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

四、重入攻擊的后果

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

重入攻擊最直接的后果之一是未經(jīng)授權(quán)提取或操縱易受影響的智能合約中保存的現(xiàn)金。 攻擊者利用該漏洞反復(fù)從合約中提取資金,耗盡合約余額,并可能給在受影響合約中投資或存儲資產(chǎn)的用戶造成重大財務(wù)損失。

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

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

五、如何減輕重入攻擊

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

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

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

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

六、重入攻擊事件分析

重入攻擊是智能合約最常見的攻擊之一,這在之前許多攻擊事件中都可以看到。

2021年8月17日,BSC上DeFi項目XSURGE遭遇閃電貸攻擊。

當(dāng)?shù)貢r間8月16日,XSURGE官方在遭攻擊前曾發(fā)布了關(guān)于SurgeBNB漏洞的聲明,由于SurgeBNB合約不可更改且已被放棄,因此無法修補該漏洞。XSURGE稱沒有透露任何關(guān)于此漏洞性質(zhì)的具體細節(jié),但強烈建議用戶盡快遷移出SurgereBnb,該漏洞隨時可能被攻擊者觸發(fā)。在聲明發(fā)布后,XSURGE隨后便遭遇攻擊,攻擊者在SurgeBNB中竊取了500萬美元。

攻擊過程如下:

(1)首先攻擊合約通過閃電貸從PancakeSwap中借了10000 BNB

(2)攻擊合約使用10000 BNB買入SURGE,將買入的BURGE賣出,調(diào)用BurgeToken合約中的sell函數(shù)。在BNB轉(zhuǎn)賬的時候,攻擊合約再次將收到的BNB轉(zhuǎn)賬到了BurgeToken合約中,再次觸發(fā)了購買BURGE的業(yè)務(wù)。根據(jù)sell函數(shù)的代碼以及BurgeToken合約的receive函數(shù),的確可能在sell過程中發(fā)生轉(zhuǎn)賬,然后在sell函數(shù)尚未修改狀態(tài)變量之前再次購買BURGE。

(3)在sell函數(shù)中重入了purchase函數(shù),在重入的purchase函數(shù)中,_totalSupply沒有減掉sell函數(shù)中賣出的BNB數(shù)量,造成可以買入更多的SURGE。

(4)攻擊者合約中獲取了高達3,896,288,852,239,440,000 BURGE,兌換成BNB有22191 BNB,償還了閃電貸以及手續(xù)費10030 BNB,剩余的12161 BNB為攻擊者此次攻擊獲取的利潤,最后將獲得的BNB轉(zhuǎn)入到攻擊者的賬戶。

2022 年 3 月 16 日,Gnosis 鏈上的借貸類協(xié)議 Hundred Finance 與 Agave 均遭遇了閃電貸襲擊,包括 AAVE 的分支 Agave 和 Compound 的分支 Hundred Finance 。損失超1100萬美元。

攻擊過程如下:

(1)從SushiSwap上通過閃電兌借出USDC和wXDAI

(2)抵押 1,200,000 個 USDC,并借貸 59,999,789.075 個 hUSDC

(3)繼續(xù)超額借貸出其他代幣,并且重復(fù)相同攻擊多次

(4)歸還閃電貸,完成攻擊

可以看出,本次攻擊的根本原因是因為合約存在超額借貸漏洞,通過分析具體的合約我們發(fā)現(xiàn)合約中存在重入問題,導(dǎo)致攻擊者可以完成攻擊并進行超額借貸。

2022 年 3 月 27 日,Revest Finance遭到黑客攻擊。

黑客利用了 Revest 合約的邏輯漏洞盜取了近 770 萬枚 ECO、579 枚 LYXe、近 7.15 億枚 BLOCKS 以及超 35 萬枚 RENA,價值約200萬美元。黑客攻擊使用從 Tornado Cash 取出的資金發(fā)動了攻擊,通過SushiSwap以及Uniswap將盜取的Token兌換成了ETH,最后通過Tornado Cash平臺將ETH轉(zhuǎn)移到了其他賬戶。

攻擊過程如下:

(1)首先,攻擊者通過UniswapV2的閃電兌換功能調(diào)用Revest合約中的mintAddressLock函數(shù)

(3)在mintAddressLock函數(shù)完成前調(diào)用_mint函數(shù)時,攻擊者重入了depositAdditionalToFNFT函數(shù)【ERC1155 onERC1155Received 重入】。

(4)由于NFT nextId(即FNFTHandler.fnftsCreated)在mint函數(shù)鑄造NFT完成并進行更新。因此,在重入調(diào)用depositAdditionalToFNFT函數(shù)時,NFT Id仍然是1027,nextId任仍然是1028。另外,合約并未驗證1028的Token數(shù)量是否為0,攻擊者再次成功地鑄造了1個ID為1028的NFT。

2022年7月10日,去中心化金融協(xié)議NFT市場Omni因智能合約漏洞遭到黑客閃電貸攻擊,耗盡了1300ETH,約143萬美元。

這次攻擊交易hash:0x264e16f4862d182a6a0b74977df28a85747b6f237b5e229c9a5bbacdf499ccb4

攻擊過程如下:

(1)首先,攻擊者通過Balancer借貸平臺閃電貸1000 ETH

(2)通過函數(shù)flashLoan閃電貸20個DOODLE

(3)通過SushiSwap平臺使用WETH兌換了1個DOODLE

(4)贖回20個NFT,tokenId = 2574, 2595, 6851, 8522, 8883, ……

(5)抵押NFT(supplyERC721),tokenId = 5251, 4777, 3693,然后鑄造nDOODLE

(6)借貸WETH(borrow),數(shù)量為12.15 ETH

(7)提取抵押的3個NFT中的2個,tokenId = 5251, 4777

(8)銷毀抵押NFT時鑄造的nDOODLE,然后調(diào)用safeTransferFrom函數(shù)將抵押的NFT轉(zhuǎn)移到攻擊合約,攻擊者利用onERC721Received函數(shù)發(fā)起了重入攻擊

(9)質(zhì)押的3個NFT提取了兩個,還剩下一個tokenID = 3693的NFT,此時抵押倉位,攻擊者在重入攻擊中實現(xiàn)了自我清算,清算完成后,將借貸設(shè)置為false。

(10)在轉(zhuǎn)移剩下的NFT時再次發(fā)生重入,此次重入,攻擊者抵押了全部的20個NFT,然后鑄造nDOODLE,以此做抵押,借貸了81 WETH。最后,將所有的20個NFT提取出來。

(11)重復(fù)以上抵押、鑄造、銷毀等操作,最終獲利148.8 ETH。

在本次事件中,由于safeTransferFrom函數(shù)調(diào)用onERC721Received函數(shù)引起的重入漏洞。攻擊者利用該漏洞發(fā)起了重入攻擊,最終獲利。

回顧了這么多的重入攻擊事件,可想而知重入漏洞在智能合約中是多么常見。

”2022中國國際金融年度論壇“于2022年9月2日在北京舉行,中國人民銀行數(shù)字貨幣研究所所長穆長春發(fā)表了關(guān)于”智能合約與數(shù)字人民幣“主題演講。穆長春表示,數(shù)字人民幣智能合約應(yīng)用場景比較廣泛,可以降低經(jīng)濟活動的履約成本,優(yōu)化營商環(huán)境,推動數(shù)字經(jīng)濟深化發(fā)展。由于智能合約的可信任、可互通優(yōu)勢,可以更好的支撐數(shù)字經(jīng)濟。

一邊是推動智能合約與數(shù)字人名幣的發(fā)展,一邊是頻繁發(fā)生的合約安全問題,我們應(yīng)該采取哪些有效預(yù)防措施,避免損失,保障安全?

以上就是腳本之家小編給大家分享的是智能合約中的重入攻擊的詳細解讀,希望此篇文章可以幫助大家更好的了解智能合約中的重入攻擊。

免責(zé)聲明:本文只為提供市場訊息,所有內(nèi)容及觀點僅供參考,不構(gòu)成投資建議,不代表本站觀點和立場。投資者應(yīng)自行決策與交易,對投資者交易形成的直接或間接損失,作者及本站將不承擔(dān)任何責(zé)任。!

你可能感興趣的文章

更多

熱門幣種

  • 幣名
    最新價格
    24H漲幅
  • bitcoin BTC 比特幣

    BTC

    比特幣

    $ 101736.83¥ 724467.96
    -0.67%
  • ethereum ETH 以太坊

    ETH

    以太坊

    $ 3401.88¥ 24224.78
    -1.18%
  • tether USDT 泰達幣

    USDT

    泰達幣

    $ 0.9997¥ 7.1188
    +0.03%
  • ripple XRP 瑞波幣

    XRP

    瑞波幣

    $ 2.2705¥ 16.1682
    -1.79%
  • binance-coin BNB 幣安幣

    BNB

    幣安幣

    $ 987.72¥ 7033.55
    -0.74%
  • solana SOL Solana

    SOL

    Solana

    $ 158.29¥ 1127.18
    -1.77%
  • usdc USDC USD Coin

    USDC

    USD Coin

    $ 1¥ 7.1209
    -0.03%
  • tron TRX 波場

    TRX

    波場

    $ 0.2892¥ 2.0593
    -1.09%
  • dogecoin DOGE 狗狗幣

    DOGE

    狗狗幣

    $ 0.1735¥ 1.2354
    -3.66%
  • cardano ADA 艾達幣

    ADA

    艾達幣

    $ 0.5534¥ 3.9407
    -3.82%

幣圈快訊

  • 麻吉加倉25倍ETH多單至1320萬美元,清算價3,321.4美元

    2025-11-09 18:12
    據(jù)HyperInsight監(jiān)測,麻吉大哥黃立成近半小時加倉其25倍杠桿ETH多單,當(dāng)前倉位價值1320萬美元,開倉價3,365.5美元,清算價3,321.4美元。
  • 分析師:趙長鵬今日實際銷毀六個Meme幣

    2025-11-09 18:06
    據(jù)鏈上分析師@ai_9684xtpa監(jiān)測,Arkham自動隱藏了部分代幣,趙長鵬今日實際銷毀六個Meme幣,包括:SHORT/quq/SIREN/BNBCARD/XXY/4。此 外,雖然趙長鵬發(fā)推表示此次銷毀意在清理錢包,然而似乎效果一般,因為又有5個代幣轉(zhuǎn)移進該地址。
  • 趙長鵬回應(yīng)銷毀Meme幣:只是清理一下錢包,捐贈地址只保留BNB

    2025-11-09 17:56
    趙長鵬在X平臺發(fā)文回應(yīng)銷毀Meme幣:只是清理一下錢包,捐贈地址只保留BNB,下次可能會選擇把它們放到市場上出售,如果捐贈者們不希望代幣在市場上出售,請不要將代幣發(fā)送到該地址。
  • CZ回應(yīng)銷毀Meme幣:只是清理一下錢包,捐贈地址只保留BNB

    2025-11-09 17:40
    CZ在X平臺發(fā)文回應(yīng)銷毀Meme幣:只是清理一下錢包,捐贈地址只保留BNB,下次我可能會選擇把它們放到市場上出售,如果您不希望代幣在市場上出售,請不要將代幣發(fā)送到該地址。
  • 麻吉大哥加倉25倍ETH多單,現(xiàn)倉位價值已超1300萬美元

    2025-11-09 17:36
    Hyperbot數(shù)據(jù)顯示,“麻吉大哥”剛剛將25倍以太坊多單加倉至3850.3333枚ETH,倉位價值1,316.3萬美元,清算價3,320.42美元。
  • 查看更多