建議協議在採用餵價來源時對預言機做好考察和研究,考慮與項目的兼容性與安全性。

作者:九九

據慢霧安全團隊情報,2023 年 2 月 2 日,Polygon 鏈上的 BonqDAO 項目遭到攻擊,攻擊者獲利 1.13 億枚 WALBT 和 9865 萬枚 BEUR 代幣。慢霧安全團隊第一時間介入分析,並將結果分享如下:

相關信息

BonqDAO 是一個非託管、去中心化的借貸平台,用戶可以為協議提供流動性或超額抵押借貸賺取收益。

以下是本次攻擊涉及的相關地址:

攻擊者 EOA 地址:

https://polygonscan.com/address/0xcAcf2D28B2A5309e099f0C6e8C60Ec3dDf656642

攻擊合約地址:

https://polygonscan.com/address/0xED596991ac5F1Aa1858Da66c67f7CFA76e54B5f1

https://polygonscan.com/address/0xb5c0bA8ED0F4Fb9a31Fccf84B9fB3Da639a1eDe5

攻擊交易:

https://polygonscan.com/tx/0xa02d0c3d16d6ee0e0b6a42c3cc91997c2b40c87d777136dedebe8ee0f47f32b1

https://polygonscan.com/tx/0x31957ecc43774d19f54d9968e95c69c882468b46860f921668f2c55fadd51b19

被攻擊的預言機合約地址:

https://polygonscan.com/address/0x8f55D884CAD66B79e1a131f6bCB0e66f4fD84d5B

攻擊核心點

BonqDAO 平台採用的預言機來源是 TellorFlex 自餵價與 Chainlink 價格的比值,TellorFlex 價格更新的一個主要限制是需要價格報告者先抵押 10 個 TRB 代幣才可以進行價格提交更新。而在 TellorFlex 中可以通過 updateStakeAmount 函數根據抵押物的價格進行週期性的更新價格報告者所需抵押的 TRB 數量。但由於 updateStakeAmount 函數一直沒有被調用過,導致攻擊者可以用極低的成本惡意修改代幣價格。

具體細節分析

1、攻擊者首先抵押了 10 個 TRB 後成為了價格報告者,之後通過調用 submitValue 函數修改預言機中 WALBT 代幣的價格。

2、攻擊者對價格進行修改後調用了 Bonq 合約的 createTrove 函數為攻擊合約創建了 trove (0x4248FD),該 trove 合約的功能主要是記錄用戶抵押物狀態、負債狀態、從市場上借款、清算等。

3、緊跟著攻擊者在協議裡進行抵押操作,接著調用 borrow 函數進行借款,由於 WALBT 代幣的價格被修改而拉高,導致協議給攻擊者鑄造了大量 BEUR 代幣。

4、在另一筆攻擊交易中,攻擊者上述同樣的手法修改了 WALBT 的價格,然後清算了市場上其他存在負債的用戶以此獲得大量的 WALBT 代幣。

5、根據慢霧 MistTrack 分析,1.13 億 WALBT 已在 Polygon 鏈 burn 並從 ETH 鏈提款 ALBT,後部分 ALBT 通過 0x 兌換為 ETH;部分 BEUR 已被攻擊者通過 Uniswap 兌換為 USDC 後通過 Multichain 跨鏈到 ETH 鏈並兌換為 DAI。截止目前,黑客在 ETH 上的地址仍有近 565 萬美元的資產,包含 ALBT、ETH、DAI 幣種。MistTrack 將持續監控黑客異動並跟進拉黑。

總結

本次攻擊事件是由於修改預言機報價所需抵押物的成本遠低於攻擊獲得利潤造成攻擊者惡意提交錯誤的價格操控市場並清算其他用戶。慢霧安全團隊建議協議在採用餵價來源時應對預言機的各種功能機製做好考察和研究,考慮與項目的兼容性與安全性。

值得一提的是,Liquity 在幾個月前也收到了相同漏洞的反饋,Liquity 將 Tellor 作為後備預言機來使用,當主預言機(Chainlink)發生故障或凍結,Liquity 才會切換到後備預言機 Tellor 的價格數據作餵價。具體可參考以下鏈接:

https://www.liquity.org/blog/tellor-issue-and-fix。

免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。文章內的信息僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。