BonqDAO價格操縱攻擊詳細分析附PoC

發表於 2023-02-02 16:58 作者: Numen Cyber

事件背景

根據NUMEN鏈上監控顯示,Feb-01-2023 06:29:18 PM +UTC,Polygon鏈上BonqDAO遭到價格操控攻擊,損失113,813,998枚WALBT和100,000,000枚BEUR,價值約8800萬美元。

攻擊者地址0xcAcf2D28B2A5309e099f0C6e8C60Ec3dDf656642 

攻擊者合約0xED596991ac5F1Aa1858Da66c67f7CFA76e54B5f1 

攻擊交易 0x31957ecc43774d19f54d9968e95c69c882468b46860f921668f2c55fadd51b19; 

0xa02d0c3d16d6ee0e0b6a42c3cc91997c2b40c87d777136dedebe8ee0f47f32b1 

攻擊分析

攻擊者首先通過少量代幣測試withdrawAllTokens功能正常使用,隨後給攻擊合約轉入少量TRB和WALBT,爲後續攻擊做准備。

攻擊者通過給TellorFlex合約添加質押存款,獲得了更新價格的條件,這裏價格更新爲price=5000000000000000000000000000.

之後攻擊者通過調用borrow方法借款,由於借款獲取價格是通過TellorFlex.getCurrentValue獲取,由於攻擊者已將該價格修改,所以這裏獲取的價格極高,導致攻擊者的大額借款可以成功借出。

漏洞核心

關鍵問題是在

https://polygonscan.com/address/0x8f55d884cad66b79e1a131f6bcb0e66f4fd84d5b#code 

合約的submitvalue 

攻擊者在上一步depositStake已經完成了資產抵押(抵押了10個TRB),所以在這一步可以給預言機發送報價。質押的越多更新報價的間隔會縮短。 

然後再看價格的查詢:

https://polygonscan.com/address/0xa1620af6138d2754f7250299dc9024563bd1a5d6#code

https://polygonscan.com/address/0x8f55d884cad66b79e1a131f6bcb0e66f4fd84d5b#code

跟進到getDataBefore

然後再看getIndexForDataBefore,getTimestampbyQueryIdanIndex,retrieveData 

querrId是個常量,先從時間戳找到index,因爲根據時間戳記錄了很多報價,然後通過querryId獲得價格,返回值正是前面submitvalue的第二個參數: 

hex:0x00000000000000000000000000000000000000001027e72f1f12813088000000 

10進制:5000000000000000000000000000。

故此由於TellorFlex合約可以進行報價,報價的條件是只要用戶質押就能報價,所以用戶通過抵押10000000000000000000.獲取了12h報價一次的機會。隨後通過TellorFlex.submitValue函數進行了報價。 

攻擊復現

EXP

EXP源碼鏈接: 

https://github.com/numencyber/SmartContractHack_PoC/blob/main/BonqDAO_exp.sol 

測試結果

總結

NUMEN實驗室提醒項目方,代幣價格需要進行嚴格把控,多種喂價匯總在一塊時,需要考慮價格計算的合理程度及喂價是否存在被控制的風險,合約上线前需要進行多家安全審計,保障合約風險盡可能被消除在鏈下,NUMEN專注於爲web3生態安全保駕護航。 

標題:BonqDAO價格操縱攻擊詳細分析附PoC

地址:https://www.coinsdeep.com/article/9220.html

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

你可能還喜歡
熱門資訊