當紅流動性挖礦 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。

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

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

來源鏈接:medium.com