創宇區塊鏈:Rikkei Finance遭黑客攻擊,損失已有百萬美元

DeFi 協議Rikkei Finance 遭黑客攻擊,已有108.5 萬美元被盜資金被轉入Tornado Cash 混幣。前言

北京時間2022 年4 月15 日,知道創宇區塊鏈安全實驗室監測到DeFi 協議Rikkei Finance 遭到黑客攻擊,被盜資金中已有2600 枚BNB(約合108.5 萬美元)被轉入Tornado Cash。

分析

攻擊事件如下圖所示:

基礎信息

攻擊合約:

0xe6df12a9f33605f2271d2a2ddc92e509e54e6b5f

0x9ae92cb9a3ca241d76641d73b57c78f1bcf0b209

攻擊者地址:

0x803e0930357ba577dc414b552402f71656c093ab

惡意預言機地址:

0xa36f6f78b2170a29359c74cefcb8751e452116f9

0x99423d4dfce26c7228238aa17982fd7719fb6d7f

攻擊tx:

0x93a9b022df260f1953420cd3e18789e7d1e095459e36fe2eb534918ed1687492 0x4e06760884fd7bfdc076e25258ccef9b043401bc95f5aa1b8f4ff2780fa45d44

被攻擊預言機地址:

0xd55f01b4b51b7f48912cd8ca3cdd8070a1a9dba5

流程

攻擊者的攻擊流程如下:

1.攻擊者調用external 可見性的setOracleData() 函數將預言機設置為自己的惡意預言機。

2.由於惡意預言機替換了原來的預言機,導致預言機輸出的rTokens 價格可以被攻擊任意操控。攻擊者向RBinance 合約發送0.0001 BNB 獲得4995533044307110.024 rBNB。

3.由於兌換了大量的rBNB,所以攻擊者藉出346199.781 USDC。

4.攻擊者將藉出的346199.781 USDC 兌換成776.298 WBNB。

5.攻擊者重複第三步和第四步操作分別借出3.033 BTCB、52275.873 DAI、297082.798 BSC-USD、299822.459 BUSD 並兌換成相應的WBNB。

6.將兌換的共2571.201 BNB 轉移到攻擊者賬戶上。

7.最後攻擊者再次調用setOracleData() 還原預言機狀態。

另外一次攻擊的手法相同,只是先將BNB 兌換成BUSD 再轉去RBinance 獲得rBUSD。

細節

問題點就在於Cointroller 中的SimplePriceOracle.sol (https://bscscan.com/address/0xd55f01b4b51b7f48912cd8ca3cdd8070a1a9dba5#code) 合約,其setOracleData 的可見性為external,可以被外部調用。

修改預言機前的正常價格為416247538680000000000。

將rToken 0x1578 的預言機修改為惡意預言機0xa36f。

設置惡意預言機後將rToken 價格提升到416881147930000000000000000000000。

後續處理

攻擊者將盜取的BNB 分批次轉入Tornado Cash 中。

Rikkei Finance 官方稱將全額補償漏洞利用攻擊中受影響的所有用戶。

總結

由於合約沒有對setOracleData 函數的可見性進行限制,導致了攻擊者可以任意修改預言機地址,從而獲取了從合約中代幣,所以我們在寫合約時一定要嚴格限制函數的可見性。

展開全文打開碳鏈價值APP 查看更多精彩資訊

Total
0
Shares
Related Posts