预言机被黑客任意利用什么时候是个头?Rikkei Finance被攻击事件分析

北京时间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的技术团队在此提醒大家,限制函数的访问权限是不可忽略的一步。

如有疑问联系邮箱:
*本文转载自网络转载,版权归原作者所有。本站只是转载分享,不代表赞同其中观点。请自行判断风险,本文不构成投资建议。*