创宇区块链|Inverse Finance 安全事件分析

Posted 「已注销」

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创宇区块链|Inverse Finance 安全事件分析相关的知识,希望对你有一定的参考价值。

前言

北京时间 2022 年 4 月 2 日晚,Inverse Finance 借贷协议遭到攻击,损失约 1560 万美元。知道创宇区块链安全实验室第一时间跟踪本次事件并分析。

分析

基础信息

攻击tx1:0x20a6dcff06a791a7f8be9f423053ce8caee3f9eecc31df32445fc98d4ccd8365

攻击tx2:0x600373f67521324c8068cfd025f121a0843d57ec813411661b07edc5ff781842

攻击者1:0x8B4C1083cd6Aef062298E1Fa900df9832c8351b3

攻击者2:0x117C0391B3483E32AA665b5ecb2Cc539669EA7E9

攻击合约:0xeA0c959BBb7476DDD6cD4204bDee82b790AA1562

Oracle:0xE8929AFd47064EfD36A7fB51dA3F8C5eb40c4cb4

Keep3rV2Oracle:0x39b1dF026010b5aEA781f90542EE19E900F2Db15

攻击流程

tx1:

1、Sushiswap 兑换,300 WETH => 374.38 INV

2、Sushiswap 兑换,200 WETH => 690307.06 USDC

3、DOLA3POOL3CRV-f 兑换,690307.06 USDC => 690203.01 DOLA

4、Sushiswap 兑换,690203.01 DOLA => 1372.05 INV

tx2:

1、质押 INV 作为抵押物

2、借走 1588 ETH、94 WBTC、4M DOLA、39.3 YFI

漏洞原理及细节

在第一笔攻击交易中,攻击者通过巨额的 WETH => INV 兑换,抬高 Sushiswap 中 INV 对 WETH 的价格。

紧接着在15秒后的下一个块中实施了第二笔攻击交易,质押 INV 作为抵押物,由于上一个块的价格操纵导致预言机对 INV 的高估值,使得攻击者得以借走大量ETH、WBTC、DOLA、YFI完成攻击套利。

实际上该两笔攻击交易即是常见的闪电贷操控价格攻击的拆分,由于预言机采用了 TWAP 类型,于是将攻击拆分成两段,首先通过巨额资金的兑换操纵交易对价格,然后抢先交易保证在下一个块中第一时间完成套利离场。

总结

本次攻击事件中虽然 Inverse Finance 采用了相对安全的 TWAP 类预言机,但在巨额资金和现有的抢先交易技术的基础上,依然存在攻击的可能。因此,TWAP 类预言机的窗口期时间也需要进行合理的设置。

近期,各类合约漏洞安全事件频发,合约审计、风控措施、应急计划等都有必要切实落实。

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

前言

北京时间 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 函数的可见性进行限制,导致了攻击者可以任意修改预言机地址,从而获取了从合约中代币,所以我们在写合约时一定要严格限制函数的可见性。

以上是关于创宇区块链|Inverse Finance 安全事件分析的主要内容,如果未能解决你的问题,请参考以下文章

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

创宇区块链 | 6 月安全月报

创宇区块链|Creat future 惨遭随意转移币,幕后黑手究竟是谁?

创宇区块链|重蹈覆辙?为何 DEUS 协议再受攻击?

“2021 CCF 中国区块链技术大会”,不见不散

区块链生态科普入门介绍