前言
北京时间2022年4月15日,知道创宇区块链安全实验室监测到DeFi协议RikkeiFinance遭到黑客攻击,被盗资金中已有2600枚BNB被转入TornadoCash。
分析
攻击事件如下图所示:
基础信息
攻击合约:
0xe6df12a9f33605f2271d2a2ddc92e509e54e6b5f
0x9ae92cb9a3ca241d76641d73b57c78f1bcf0b209
分析师:比特币的主导率已达到顶峰,山寨币的表现可能会优于大盘:金色财经报道,TradingView 的数据显示,BTC主导率从第一季度的 42% 上升至 48%,并且本月到目前为止一直难以超过这一水平。近两年来,该指标一直在 38% 和 48% 之间波动,从 46%-48% 的下降与山寨币的超额收益相吻合。
加密服务提供商 Matrixport 的研究和战略主管 Markus Thielen 周四在给客户的一份报告中表示,比特币的主导地位可能会达到顶峰,这将表明山寨币的表现将优于大盘。[2023/4/21 14:18:34]
攻击者地址:
0x803e0930357ba577dc414b552402f71656c093ab
恶意预言机地址:
0xa36f6f78b2170a29359c74cefcb8751e452116f9
Halo Network获顶峰资本1000万美元基石投资:据官方消息,Halo Labs近日完成顶峰资本董事长李晋荣先生1000万美元基石投资。投资已于2021年5月14日完成,通过本次投资顶峰资本已获得治理代币HO787381枚。
Halo Network主网已于4月19日上线开启全球联动创世铸币,目前铸币还在进行中。
Halo Network采用双模式流动创新交易管理、跨链swap以及全新HPOS共识机制及原生预言机。Halo HUB共包含三个方向,分别为:基础层的改进使得光环系统具备了接入传统金融工具的基础条件并实现更高效和低成本的交易架构;光环系统在应用层面创造了一体化DeFi系列工具流;传统金融工具可通过相关配套工具获取基础数据及交易能力。[2021/5/18 22:14:21]
0x99423d4dfce26c7228238aa17982fd7719fb6d7f
彭博社高级商品策略师:比特币在到达周期顶峰或平稳期前还有很长的路要走:金色财经报道,彭博社高级商品策略师Mike McGlone认为,比特币的供应量下降,加上新投资者的需求旺盛,比特币在到达周期顶峰或“平稳期”之前还有很长的路要走。他评论说:“仍处于价格发现模式,比特币高原(增长后的稳定期)似乎遥遥无期,比特币供应正在下降,需求正在上升,这使我们期望随着加密货币的成熟,价格将继续上涨并建立更高的高原。”[2021/4/13 20:12:14]
攻击tx:
0x93a9b022df260f1953420cd3e18789e7d1e095459e36fe2eb534918ed1687492
0x4e06760884fd7bfdc076e25258ccef9b043401bc95f5aa1b8f4ff2780fa45d44
巴克莱银行的专家相信比特币已经达到顶峰:专家们认为比特币价格近期从20,000美元的历史高位回落,表明这是一个仍在努力寻找其真正价值的资产。 其他策略师指出,比特币的价格已经破灭,未来将降至零。[2018/4/13]
被攻击预言机地址:
0xd55f01b4b51b7f48912cd8ca3cdd8070a1a9dba5
流程
攻击者的攻击流程如下:
1.攻击者调用external可见性的setOracleData()函数将预言机设置为自己的恶意预言机。
2.由于恶意预言机替换了原来的预言机,导致预言机输出的rTokens价格可以被攻击任意操控。攻击者向RBinance合约发送0.0001BNB获得4995533044307110.024rBNB。
3.由于兑换了大量的rBNB,所以攻击者借出346199.781USDC。
4.攻击者将借出的346199.781USDC兑换成776.298WBNB。
5.攻击者重复第三步和第四步操作分别借出3.033BTCB、52275.873DAI、297082.798BSC-USD、299822.459BUSD并兑换成相应的WBNB。
6.将兑换的共2571.201BNB转移到攻击者账户上。
7.最后攻击者再次调用setOracleData()还原预言机状态。
另外一次攻击的手法相同,只是先将BNB兑换成BUSD再转去RBinance获得rBUSD。
细节
问题点就在于Cointroller中的SimplePriceOracle.sol(https://bscscan.com/address/0xd55f01b4b51b7f48912cd8ca3cdd8070a1a9dba5#code)合约,其setOracleData的可见性为external,可以被外部调用。
修改预言机前的正常价格为416247538680000000000。
将rToken0x1578的预言机修改为恶意预言机0xa36f。
设置恶意预言机后将rToken价格提升到416881147930000000000000000000000。
后续处理
攻击者将盗取的BNB分批次转入TornadoCash中。
RikkeiFinance官方称将全额补偿漏洞利用攻击中受影响的所有用户。
总结
由于合约没有对setOracleData函数的可见性进行限制,导致了攻击者可以任意修改预言机地址,从而获取了从合约中代币,所以我们在写合约时一定要严格限制函数的可见性。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。