孙宇晨旗下Poloniex被盗上亿美元,Raft项目被盗340万美元,上周黑客为何如此猖獗?

Beosin
Beosin 机构得得号

Nov 13, 2023 Beosin是总部位于新加坡的全球知名区块链安全公司,为区块链生态提供代码安全审计,安全风险监控、预警与阻断,虚拟资产被盗追回,KYT/AML等“一站式”安全产品+服务,已为全球2000多个区块链企业服务,保护客户资产5000多亿美元。

摘要: 上周,发生了两起较大的安全事件。

首先是北京时间11月10日19:00左右,Beosin旗下EagleEye监测到孙宇晨旗下Poloniex 相关地址持续转出大额资产,疑似被盗。
相关地址:https://eagleeye.space/address/0x0A5984f86200415894821bFEFc1c1De036DbF9e7紧接着,孙宇晨以及 Poloniex 在社交平台发布公告证实了被盗事件。根据Beosin安全团队使用Beosin Trace追踪统计,Poloniex 被盗资产累计约 1.14 亿美元。
Poloniex黑客将盗取代币分散到各个地址进行兑换,并沉淀到不同地址。11月10日20:30左右,攻击在以太坊链上已将盗取代币兑换为超3000万美元的ETH并存放在各个地址,在TRON链上的盗取资金也已转移为超过2000万美元的TRX并存放于各个地址,同时还在持续兑换转移。资金转移明细如下图所示。
Beosin Trace追踪资金统计在攻击发生后,孙宇晨也发文,劝告黑客尽快「退款」,并愿意拿出 5% 资产作为白帽奖励,黑客也并未作出任何回应。

无独有偶,第二天2023年11月11日,Beosin旗下EagleEye平台监测到,以太坊链上的Raft项目的IRPM合约遭受黑客攻击,项目方损失约3,407,751美元。本次攻击较为复杂,Beosin安全团队将详细分析结果分享如下。
相关地址:
https://eagleeye.space/address/0xc1f2b71A502B551a65Eee9C96318aFdD5fd439fA

Raft项目安全事件相关信息


●攻击交易0xfeedbf51b4e2338e38171f6e19501327294ab1907ab44cfd2d7e7336c975ace7●攻击者地址0xc1f2b71A502B551a65Eee9C96318aFdD5fd439fA●攻击合约0x0A3340129816a86b62b7eafD61427f743c315ef80xfdc0feaa3f0830aa2756d943c6d7d39f1d587110●被攻击合约0x9ab6b21cdf116f611110b048987e58894786c244

 

Raft项目安全事件漏洞分析

 


主要是攻击者利用了闪电贷进行质押率操控,并且铸币计算方式采用向上取整导致,攻击者利用被操纵的质押率放大了向上取整的影响,导致少量的质押可以借出大量的资产。

攻击流程


攻击准备阶段:
1. 攻击者通过攻击合约,在AAVE中使用闪电贷借入了6001个cbETH,以用于捐赠进行利率操控。
接着攻击者清算了自己的在IRPM上借贷。
清算分两个阶段,在_closePosition中攻击者burn了合约中一半数量的rcbETH-d(rcbETH-d是raft项目的债务量代币,rcbETH-c是质押资产代币)。 在_closePosition函数结束之后,第二阶段会调用_updateDebtAndCollateralIndex更新新的借贷利率。
这里面的总债务量攻击者通过前面的清算已经减少了一半。 由于.raftCollateralToken.setIndex这个质押资产的利率更新中使用了balanceof(address.This)作为参数传入,导致了攻击者通过闪电贷借入的6001个cbETH可以直接转入合约中进行控制。可以看到这6003个cbETH的总量有6001个都是未更新的。
而在代币cbETH的setIndex函数中虽然有权限控制,新的利率是由攻击者操控的backingAmount除代币总量进行计算,攻击者通过被攻击合约(IRPM)的权限,并传入异常的参数,导致这个storedIndex扩大到67*10^36(扩大67*10^18)。
2.在抵押率被操控之后攻击者通过另一个攻击合约0xfdc0feaam进行多笔cbETH铸造rcbETH-c。这里的铸币函数是采用的向上取整的方式,由于上面storedIndex扩大了67*10^18,会导致铸币数量缩小67*10^18倍,但由于铸币函数是采用的向上取整的方式,使得本该按1:1/(67*10^18)比例铸币变成了1:1来铸币,相当于抵押品价值扩大了67*10^18倍。 3.在多次mint结束后,攻击者有了10,050个rcbETH-c,开始了借贷。(这多笔mint债务量rcbETH-d为3000始终没变)。
4.攻击在增加大量rcbETH-c 后,先把闪电贷需要还的钱借出来 之后再以R token形式的借出收益共6705028个。 之后将3,300,000个Rtoken进行兑换,最终共换出1575个ETH, 但是在换出的时候将eth换到0地址上了。 剩下的3322460 Rtoken,账户中留下了1442460个,剩下的1,900,000个转入了攻击合约向攻击者兑换了个127ETH。

Raft项目安全事件资金追踪


截止发文时,Raft项目的IRPM合约被盗资金共3,407,751美元,其中价值3,140,000的ETH被攻击者误转入0地址,剩下的获利由攻击合约分批卖出267,751美元。

总结


对于Poloniex安全事件,Beosin提醒钱包或者项目方应保管好私钥。针对Raft项目项目IRPM合约安全事件,Beosin安全团队建议:1. 质押率等关键函数计算通过预言机报价进行。2.涉及系数计算,要先乘后除,并且尽量避免使用向上取整的方式。同时我们建议项目上线前,寻求专业的安全审计公司进行全面的安全审计。

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 Beosin 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信