不到三個月, Inverse Finance 就再次遭受預言機攻擊,預言機為何如此重要。前言
北京時間2022 年6 月16 日,知道創宇區塊鏈安全實驗室監測到以太坊鏈上借貸項目Inverse Finance 因預言機設計問題被攻擊,損失約77BTC(152W美元)。
知道創宇區塊鏈安全實驗室第一時間跟踪本次事件並分析。
基礎信息
被攻擊預言機合約:0xe8b3bc58774857732c6c1147bfc9b9e5fb6f427c
攻擊者地址:0x7b792e49f640676b3706d666075e903b3a4deec6
攻擊合約:0xf508c58ce37ce40a40997c715075172691f92e2d
tx:0x958236266991bc3fe3b77feaacea120f172c0708ad01c7a715b255f218f9313c
漏洞分析
與大部分預言機事件一樣,項目方由於在預言機實現過程中過度依賴某一池子內的價格進行定價。導致攻擊者可操控該分佈式池子的代幣比例導致價格控制進而攻擊協議。
本次事件中,攻擊者利用了項目方如下的價格預言機代碼:
該餵價函數將Crv3 池內BTC/ETH/USDT 池內代幣餘額作為價格源的一部分,導致在攻擊者在CRV3CRYPTO 池子中利用大量BTC 換取了USDT 後產生了巨大的價格拉升。
攻擊流程
1. 攻擊者首先利用閃電貸從AAVE 中藉來了27000 個WBTC, 隨後將225個存入了Curve,協議為其鑄造相應的質押憑據(crv3crypto);
2. 利用crv3crypto 存入yvCurve-3Crypto,協議為其鑄造相應憑據anYvCrv3Crypto;
3. 利用餘下的WBTC 來進行兌換,進而控制latestAnswer 中獲取的Curve池子中的餘額比例。 (使用26,775 WBTC 交換獲得了75403376 USDT);
在第三步兌換前預言機latestAnswer 返回為979*1e18;
在價格操控後latestAnswer 返回為2831*1e18;
4. 於是攻擊者得以使用抵押物借出10,133,949 個DOLA(價值1011W 美元),而原本225 個BTC 價值466W 美元;
5. 然後則是利用USDT 換回WBTC、交換DOLA 為3Crv;
6. 移除3Crv 流動性換取穩定幣USDT;
7. 交換為BTC 並歸還閃電貸。
總結
預言機合約中錯誤的使用了balanceOf 導致攻擊者可操控數據源導致被攻擊,這樣的攻擊方式在之前已出現過多次如Definer 預言機攻擊事件,項目方在開發過程中不應忽視安全性考量,在上線前建議做好審計工作。
展開全文打開碳鏈價值APP 查看更多精彩資訊