北京時間2022年4月15日11點18分,CertiK審計團隊監測到Rikkei Finance被攻擊,導致約合701萬元人民幣(2,671 BNB)資產遭受損失。
由於缺乏對函數`setOracleData`的訪問控制,攻擊者將預言機修改為惡意合約,並獲取了從合約中提取USDC、BTCB、DAI、USDT、BUSD和BNB的權限。攻擊者隨後將這些代幣全部交易為BNB,並通過tornado.cash將這些BNB轉移一空。
攻擊步驟
①攻擊者向rBNB合約發送了0.0001個BNB以鑄造4995533044307111個rBNB。
②攻擊者通過公共函數`setOracleData()`將預言機設置為一個惡意的預言機。
③由於預言機已被替換,預言機輸出的rTokens價格被操縱。
④攻擊者用被操縱的價格借到了346,199USDC。
⑤攻擊者將步驟4中獲得的USDC換成BNB,並將BNB發送到攻擊合約中。
⑥攻擊者重複步驟4和5,耗盡BTCB、DAI、USDT和BUSD。
⑦攻擊者使用函數`setOracleData()`再次改變預言機,還原了該預言機的狀態。
合約漏洞分析
Simple Price預言機 :
https://bscscan.com/address/0xd55f01b4b51b7f48912cd8ca3cdd8070a1a9dba5#code
Cointroller: https://bscscan.com/address/0x00aa3a4cf3f7528b2465e39af420bb3fb1474b7b#code
資產地址: Rtoken 0x157822ac5fa0efe98daa4b0a55450f4a182c10ca
新的(有問題的)預言機:
0xa36f6f78b2170a29359c74cefcb8751e452116f9
原始價格: 416247538680000000000
更新後的價格: 416881147930000000000000000000000
Rikket Finance 是利用Cointroller中的SimplePrice預言機來計算價格的。然而,函數`setOracleData()`沒有權限控制,也就是說它可以被任何用戶調用。攻擊者使用自己的(惡意的)預言機來替換原有的預言機,並將rToken的價格從416247538680000000000提升到4168811479300000000000000。
資產去向
攻擊者在兩次交易中獲得了2671枚BNB(價值約701萬人民幣)。攻擊者已使用tornado.cash將所有的代幣進行了轉移。
其他細節
漏洞交易:
● https://bscscan.com/tx/0x4e06760884fd7bfdc076e25258ccef9b043401bc95f5aa1b8f4ff2780fa45d44
● https://bscscan.com/tx/0x93a9b022df260f1953420cd3e18789e7d1e095459e36fe2eb534918ed1687492
相關地址:
● 攻擊者地址:
0x803e0930357ba577dc414b552402f71656c093ab
● 攻擊者合約:
0x9aE92CB9a3cA241D76641D73B57c78F1bCF0B209
0xe6df12a9f33605f2271d2a2ddc92e509e54e6b5f
● 惡意預言機:
https://bscscan.com/address/0x99423d4dfce26c7228238aa17982fd7719fb6d7f
https://bscscan.com/address/0xa36f6f78b2170a29359c74cefcb8751e452116f9
● 攻擊者地址:
0x803e0930357ba577dc414b552402f71656c093ab
● 攻擊者合約:
0x9aE92CB9a3cA241D76641D73B57c78F1bCF0B209
0xe6df12a9f33605f2271d2a2ddc92e509e54e6b5f
● 惡意預言機:
https://bscscan.com/address/0x99423d4dfce26c7228238aa17982fd7719fb6d7f
https://bscscan.com/address/0xa36f6f78b2170a29359c74cefcb8751e452116f9
●被攻擊預言機地址:
https://bscscan.com/address/0xd55f01b4b51b7f48912cd8ca3cdd8070a1a9dba5#code
寫在最後
該次事件可通過安全審計發現相關風險。 CertiK的技術團隊在此提醒大家,限制函數的訪問權限是不可忽略的一步。