mt logoMyToken
总市值:
0%
恐慌指数:
0%
币种:--
平台 --
ETH Gas:--
EN
USD
APP
Ap Store QR Code

Scan Download

创宇区块链|Rikkei Finance 遭黑客攻击 损失已有百万美元

收藏
分享

1. 前言

北京时间 2022 年 4 月 15 日, 知道创宇区块链安全实验室 监测到 DeFi 协议 Rikkei Finance 遭到黑客攻击,被盗资金中已有 2600 枚 BNB(约合 108.5 万美元)被转入 Tornado Cash。

2. 分析

攻击事件如下图所示:

4hMgYAkHkgFiRgzxLV9rcsu0IywQ3RiZgGqs4V1u.jpeg

oo8SbEraUJrsYPhmb9vbhdcVtG5bOdlTR9uTclll.jpeg

2.1 基础信息

  • 攻击合约:0xe6df12a9f33605f2271d2a2ddc92e509e54e6b5f0x9ae92cb9a3ca241d76641d73b57c78f1bcf0b209

  • 攻击者地址:

    0x803e0930357ba577dc414b552402f71656c093ab

  • 恶意预言机地址:0xa36f6f78b2170a29359c74cefcb8751e452116f90x99423d4dfce26c7228238aa17982fd7719fb6d7f

  • 攻击 tx:0x93a9b022df260f1953420cd3e18789e7d1e095459e36fe2eb534918ed16874920x4e06760884fd7bfdc076e25258ccef9b043401bc95f5aa1b8f4ff2780fa45d44

  • 被攻击预言机地址:

    0xd55f01b4b51b7f48912cd8ca3cdd8070a1a9dba5

2.2 流程

攻击者的攻击流程如下:

  1. 攻击者调用 external 可见性的 setOracleData() 函数将预言机设置为自己的恶意预言机。

  2. 由于恶意预言机替换了原来的预言机,导致预言机输出的 rTokens 价格可以被攻击任意操控。攻击者向 RBinance 合约发送 0.0001 BNB 获得 4995533044307110.024 rBNB。

DMUzHqE5ouJySQ3OyMm6sV315Ye1igJE94Evllld.jpeg

3. 由于兑换了大量的 rBNB,所以攻击者借出 346199.781 USDC

4. 攻击者将借出的 346199.781 USDC 兑换成  776.298 WBNB。

GHRiDYh9WoBTIWHRn8GjBebj74c04pmS3LapKDGr.jpeg

5. 攻击者重复第三步和第四步操作分别借出 3.033 BTC B、52275.873 DAI 、297082.798 BSC-USD、299822.459 BUSD 并兑换成相应的 WBNB。

6. 将兑换的共 2571.201 BNB 转移到攻击者账户上。

ZGTADHpncwy1nEzr2t5QGXujWf6gBcZYSDaxYQUQ.jpeg

7. 最后攻击者再次调用 setOracleData() 还原预言机状态。

另外一次攻击的手法相同,只是先将 BNB 兑换成 BUSD 再转去 RBinance 获得 rBUSD。

2.3 细节

问题点就在于 Cointroller 中的 SimplePriceOracle.sol (https://bscscan.com/address/0xd55f01b4b51b7f48912cd8ca3cdd8070a1a9dba5#code) 合约,其 setOracleData 的可见性为 external,可以被外部调用。

DMdmBCc2w5O6jmdUXgbC2vtirnrswZFzDMuKVaBn.jpeg

修改预言机前的正常价格为 416247538680000000000。

Wem11Lf4uBdsw6qqcZ6I0Jhk4nOP96Nn1iOGaeaB.jpeg

将 rToken 0x1578 的预言机修改为恶意预言机 0xa36f。

zgAZhRTcnKll0tVfla77850QwSAqN0fBUEPCdKfb.jpeg

设置恶意预言机后将 rToken 价格提升到 416881147930000000000000000000000。

QgC7DVqJpAgUVJVzmagvRnh2NOgIePxb3GF76wx2.jpeg

2.4 后续处理

攻击者将盗取的 BNB 分批次转入  Tornado Cash 中。

fX1HHj4P6loKPMyxDo7U8wLIEMSrsHAr2UJVf0oB.png

Rikkei Finance 官方称将全额补偿漏洞利用攻击中受影响的所有用户。

kKg92FTypkySQDLh0oLzmFXeeojYkMcOxbByY7XK.png

3. 总结

由于合约没有对 setOracleData 函数的可见性进行限制,导致了攻击者可以任意修改预言机地址,从而获取了从合约中代币,所以我们在写合约时一定要严格限制函数的可见性。

免责声明:本文版权归原作者所有,不代表MyToken(www.mytokencap.com)观点和立场;如有关于内容、版权等问题,请与我们联系。
相关阅读