1inch 技術分析頭部DeFi 協議Balancer 通縮代幣資金池攻擊細節

當紅流動性挖礦DeFi項目Balancer官方披露了損失50萬美元的通縮代幣攻擊事件原理,鏈上聚合交易平台1inch則進一步分析了Balancer攻擊事件更多技術細節。

原文標題:《STA通縮代幣Balancer資金池攻擊事件》
撰文:鏈上聚合交易平台1inch
翻譯:盧江飛

6月29日去中心化交易平台Balancer Protocol至少有兩個多代幣資金池因漏洞損失了超過50萬美元,該事件發生在自動化做市商(AMM)和通縮代幣模式的環境下。黑客通過閃電貸借入資金,實施多次STA代幣兌換交易,最終耗盡了Balancer資金池內的STA餘額。

1inch 技術分析頭部DeFi 協議Balancer 通縮代幣資金池攻擊細節

Balancer 資金池是一種類似Uniswap 的多維度自動化做市商,包含多種資產,允許用戶通過創建套利機會並基於特定公式形成價格來交換任何資產,因而各種代幣可以保持一定比例的平衡。

黑客向以太坊主網發送了一個複雜的交易,對其中一個Balancer 資金池實施攻擊。幾分鐘之後第二筆交易發生,攻擊對像是另一個Balancer 資金池。我們分析了本次攻擊發生的情況,報告如下。

攻擊者利用智能合約在單個交易中自動執行多個動作,主要分為三個步驟:

第一步,攻擊者從dYdX獲得了10.4萬WETH的閃電貸,這些資金可用於執行24次WETH與STA代幣來回交換,使得Balancer資金池中的STA餘額在多次交換之後被耗盡,最終剩下1 weiSTA (0.000000000000000001 STA)。

之所以出現這種現象,可能是因為Balancer 資金池合約一直在跟蹤合約中的代幣餘額,同時STA 代幣採用的通貨緊縮模式,每筆交易會向接收者收取1% 的轉帳費,從而導致transfer ()和transferFrom ()兩個內部函數行為不當,因此每當攻擊者將WETH 交換成STA 代幣時,Balancer 資金池收到的STA 代幣都會比預期少1%。

下一步,攻擊者開始反復將weiSTA代幣兌換成WETH。由於STA代幣轉帳費的存在,在餘額不足的情況下Balancer資金池其實無法收到STA代幣,但同時他們卻會釋放了WETH。如果攻擊者反覆執行這個操作的話,就會將Balance資金池中的WBTC、SNX、還有LINK代幣餘額耗盡。

最後一步,攻擊者向dYdX償還了通過閃電貸借入的10.4萬WETH,然後通過存入一些weiSTA代幣迅速增加自己在Balancer資金池中的份額。接下來通過Uniswap V2將所獲得的Balancer資金池代幣兌換出13.6萬STA代幣,接著又再次將這些代幣兌換成109 WETH,所有被盜的資金目前都已被轉移到該地址:0xbf675c80540111a310b06e1482f9127ef4e7469a。

本次攻擊的幕後推手很可能是一個非常老練的智能合約工程師,對頭部DeFi協議有著非常深刻地理解和認知。這次襲擊顯然是有組織的,且事先做了充分準備。此外,攻擊者還使用了Tornado Cash來獲得初始資金,可以隱藏兌換的以太幣(Ether)的來源,因而這些資金被用於部署智能合約或實施攻擊。

本文經鏈聞同意授權轉載,文章來源:鏈聞 ChainNews(ID:chainnewscom)

衍伸閱讀


立即加入 Telegram 獲得最精準的區塊鏈新知、加密貨幣動態!