
上周,發(fā)生了兩起較大的安全事件。
首先是北京時(shí)間11月10日19:00左右,Beosin旗下EagleEye監(jiān)測(cè)到孫宇晨旗下Poloniex 相關(guān)地址持續(xù)轉(zhuǎn)出大額資產(chǎn),疑似被盜。
相關(guān)地址:
緊接著,孫宇晨以及 Poloniex 在社交平臺(tái)發(fā)布公告證實(shí)了被盜事件。根據(jù)Beosin安全團(tuán)隊(duì)使用Beosin Trace追蹤統(tǒng)計(jì),Poloniex 被盜資產(chǎn)累計(jì)約 1.14 億美元。
Poloniex黑客將盜取代幣分散到各個(gè)地址進(jìn)行兌換,并沉淀到不同地址。11月10日20:30左右,攻擊在以太坊鏈上已將盜取代幣兌換為超3000萬美元的ETH并存放在各個(gè)地址,在TRON鏈上的盜取資金也已轉(zhuǎn)移為超過2000萬美元的TRX并存放于各個(gè)地址,同時(shí)還在持續(xù)兌換轉(zhuǎn)移。資金轉(zhuǎn)移明細(xì)如下圖所示。
Beosin Trace追蹤資金統(tǒng)計(jì)
在攻擊發(fā)生后,孫宇晨也發(fā)文,勸告黑客盡快「退款」,并愿意拿出 5% 資產(chǎn)作為白帽獎(jiǎng)勵(lì),黑客也并未作出任何回應(yīng)。
無獨(dú)有偶,第二天2023年11月11日,Beosin旗下EagleEye平臺(tái)監(jiān)測(cè)到,以太坊鏈上的Raft項(xiàng)目的IRPM合約遭受黑客攻擊,項(xiàng)目方損失約3,407,751美元。本次攻擊較為復(fù)雜,Beosin安全團(tuán)隊(duì)將詳細(xì)分析結(jié)果分享如下。
相關(guān)地址:
Raft項(xiàng)目安全事件相關(guān)信息
●攻擊交易
0xfeedbf51b4e2338e38171f6e19501327294ab1907ab44cfd2d7e7336c975ace7
●攻擊者地址
0xc1f2b71A502B551a65Eee9C96318aFdD5fd439fA
●攻擊合約
0x0A3340129816a86b62b7eafD61427f743c315ef8
0xfdc0feaa3f0830aa2756d943c6d7d39f1d587110
●被攻擊合約
0x9ab6b21cdf116f611110b048987e58894786c244
Raft項(xiàng)目安全事件漏洞分析
主要是攻擊者利用了閃電貸進(jìn)行質(zhì)押率操控,并且鑄幣計(jì)算方式采用向上取整導(dǎo)致,攻擊者利用被操縱的質(zhì)押率放大了向上取整的影響,導(dǎo)致少量的質(zhì)押可以借出大量的資產(chǎn)。
攻擊流程
攻擊準(zhǔn)備階段:
1. 攻擊者通過攻擊合約,在AAVE中使用閃電貸借入了6001個(gè)cbETH,以用于捐贈(zèng)進(jìn)行利率操控。
接著攻擊者清算了自己的在IRPM上借貸。
清算分兩個(gè)階段,在_closePosition中攻擊者burn了合約中一半數(shù)量的rcbETH-d(rcbETH-d是raft項(xiàng)目的債務(wù)量代幣,rcbETH-c是質(zhì)押資產(chǎn)代幣)。
在_closePosition函數(shù)結(jié)束之后,第二階段會(huì)調(diào)用_updateDebtAndCollateralIndex更新新的借貸利率。
這里面的總債務(wù)量攻擊者通過前面的清算已經(jīng)減少了一半。
由于.raftCollateralToken.setIndex這個(gè)質(zhì)押資產(chǎn)的利率更新中使用了balanceof(address.This)作為參數(shù)傳入,導(dǎo)致了攻擊者通過閃電貸借入的6001個(gè)cbETH可以直接轉(zhuǎn)入合約中進(jìn)行控制。可以看到這6003個(gè)cbETH的總量有6001個(gè)都是未更新的。
而在代幣cbETH的setIndex函數(shù)中雖然有權(quán)限控制,新的利率是由攻擊者操控的backingAmount除代幣總量進(jìn)行計(jì)算,攻擊者通過被攻擊合約(IRPM)的權(quán)限,并傳入異常的參數(shù),導(dǎo)致這個(gè)storedIndex擴(kuò)大到67*10^36(擴(kuò)大67*10^18)。
2.在抵押率被操控之后攻擊者通過另一個(gè)攻擊合約0xfdc0feaam進(jìn)行多筆cbETH鑄造rcbETH-c。這里的鑄幣函數(shù)是采用的向上取整的方式,由于上面storedIndex擴(kuò)大了67*10^18,會(huì)導(dǎo)致鑄幣數(shù)量縮小67*10^18倍,但由于鑄幣函數(shù)是采用的向上取整的方式,使得本該按1:1/(67*10^18)比例鑄幣變成了1:1來鑄幣,相當(dāng)于抵押品價(jià)值擴(kuò)大了67*10^18倍。
3.在多次mint結(jié)束后,攻擊者有了10,050個(gè)rcbETH-c,開始了借貸。(這多筆mint債務(wù)量rcbETH-d為3000始終沒變)。
4.攻擊在增加大量rcbETH-c 后,先把閃電貸需要還的錢借出來
之后再以R token形式的借出收益共6705028個(gè)。
之后將3,300,000個(gè)Rtoken進(jìn)行兌換,最終共換出1575個(gè)ETH, 但是在換出的時(shí)候?qū)th換到0地址上了。
剩下的3322460 Rtoken,賬戶中留下了1442460個(gè),剩下的1,900,000個(gè)轉(zhuǎn)入了攻擊合約向攻擊者兌換了個(gè)127ETH。
Raft項(xiàng)目安全事件資金追蹤
截止發(fā)文時(shí),Raft項(xiàng)目的IRPM合約被盜資金共3,407,751美元,其中價(jià)值3,140,000的ETH被攻擊者誤轉(zhuǎn)入0地址,剩下的獲利由攻擊合約分批賣出267,751美元。
總結(jié)
對(duì)于Poloniex安全事件,Beosin提醒錢包或者項(xiàng)目方應(yīng)保管好私鑰。針對(duì)Raft項(xiàng)目項(xiàng)目IRPM合約安全事件,Beosin安全團(tuán)隊(duì)建議:1. 質(zhì)押率等關(guān)鍵函數(shù)計(jì)算通過預(yù)言機(jī)報(bào)價(jià)進(jìn)行。2.涉及系數(shù)計(jì)算,要先乘后除,并且盡量避免使用向上取整的方式。同時(shí)我們建議項(xiàng)目上線前,尋求專業(yè)的安全審計(jì)公司進(jìn)行全面的安全審計(jì)。






.png)





















