Beanstalk Farm 攻擊事件分析

北京時間2022年4月17日,CertiK審計團隊監測到Beanstalk協議被惡意利用,導致24,830 ETH和36,398,226 BEAN遭受損失。攻擊者創建了一個惡意提案,通過閃電貸獲得了足夠多的投票,並執行了該提案,從而從協議中竊取了資產。目前,攻擊者已將所有的ETH(約4.7億人民幣)轉移到了Tornado Cash。

攻擊步驟

攻擊前黑客的準備行動:

攻擊者將一些BEAN代幣存入Beanstalk,用以創建惡意提案”InitBip18″。該提案一旦生效,將把協議中的資產轉移給攻擊者。

正式發起攻擊流程:

  1. 攻擊者閃電貸了3.5億Dai、5億USDC、1.5億USDT、3200萬Bean和1160萬LUSD。

  2. 閃電貸的資產被轉換為795,425,740 BEAN3Crv-f和58,924,887 BEANLUSD-f。

  3. 攻擊者將步驟中獲得的所有資產存入Diamond合約,並投票給惡意的BIP18提案。

  4. 函數emergencyCommit()被立即調用以執行惡意的BIP18提案。

  5. 在步驟3和4之後,攻擊者能夠竊取合約中的36,084,584 BEAN, 0.54 UNIV2(BEAN-WETH), 874,663,982 BEAN3Crv及60,562,844 BEANLUSD-f。

  6. 攻擊者利用在步驟5中竊取的資產來償還閃電貸,並獲得了其餘的24,830 WETH和36,398,226 BEAN作為利潤。

漏洞分析

該漏洞的根本原因:

Silo系統中用於投票的BEAN3Crv-f和BEANLUSD-f 可以通過閃電貸獲得。然而,由於Beanstalk協議中缺乏反閃電貸機制,攻擊者可以藉用該協議所支持的眾多代幣從而為惡意提案投票。

攻擊者如何繞過驗證:

為了通過”emergencyCommit() “執行提案,攻擊者需要繞過以下驗證。

  • 驗證一:確保BIP被提出後,有24小時的窗口期。

  • 驗證二:確保對某一特定BIP的投票比例不低於閾值,即⅔。

由於BIP18提案是在一天前創建,因此驗證一可被繞過;通過閃電貸,BIP18提案獲得了78%以上的投票,超過了67%,因此繞過了驗證二。

資產去向

izIAH8RyS9EaHP1WqEeApdhF1P1PORo41eN0Nw9w.png

其他細節

漏洞交易

  • BIP18提案:https://etherscan.io/tx/0x68cdec0ac76454c3b0f7af0b8a3895db00adf6daaf3b50a99716858c4fa54c6f

  • 執行BIP18:https://etherscan.io/tx/0xcd314668aaa9bbfebaf1a0bd2b6553d01dd58899c508d4729fa7311dc5d33ad7

合約地址

  • 受害者合約:https://etherscan.io/address/0xc1e088fc1323b20bcbee9bd1b9fc9546db5624c5#code

  • 攻擊者合約:https://etherscan.io/address/0x1c5dcdd006ea78a7e4783f9e6021c32935a10fb4

  • 惡意提案:https://etherscan.io/address/0xe5ecf73603d98a0128f05ed30506ac7a663dbb69

  • 攻擊者初始資金活動:https://arbiscan.io/address/0x71a715ff99a27cc19a6982ae5ab0f5b070edfd35

    https://debank.com/profile/0x1c5dcdd006ea78a7e4783f9e6021c32935a10fb4/history

寫在最後

通過審計,我們可以發現閃電貸可用於操縱投票這一風險因素。攻擊發生後,CertiK的推特預警賬號以及官方預警系統已於第一時間發布了消息。同時,CertiK也會在未來持續於官方公眾號發布與項目預警(攻擊、欺詐、跑路等)相關的信息。

Total
0
Shares
Related Posts