查看原文
其他

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

Beosin Beosin 2024-02-22

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

首先是北京时间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

●攻击合约

0x0A3340129816a86b62b7eafD61427f743c315ef8

0xfdc0feaa3f0830aa2756d943c6d7d39f1d587110

●被攻击合约

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作为一家全球领先的区块链安全公司,在全球10多个国家和地区设立了分部,业务涵盖项目上线前的代码安全审计、项目运行时的安全风险监控、预警与阻断、虚拟货币被盗资产追回、安全合规KYT/AML等“一站式”区块链安全产品+服务,公司致力于Web3生态的安全发展,已为全球3000多个企业提供区块链安全技术服务,包括HashKey Group、Amber Group、BNB Chain等,已审计智能合约和公链主网超3000份,包括PancakeSwap、Ronin Network、OKCSwap等。欢迎点击公众号留言框,与我们联系。

 Beosin近期热文
继续滑动看下一个

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

Beosin Beosin
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存