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






.png)





















