去中心化交易所 Bunni 於週二發佈了一份關於該漏洞的事後分析報告,該漏洞導致 840 萬美元的損失。
根據報告,該漏洞影響了兩個池——Unichain 上的 weETH/ ETH對和以太坊主網的USDC/ USDT對。Bunni
認為,智能合約中用於在提款期間更新空閒餘額的舍入方向存在問題,這是漏洞的根本原因。
報告稱:“漏洞的關鍵是由於小額提款導致的流動性錯誤減少。”“它源於 [BunniHubLogic::withdraw()] 中處理池子空閒餘額更新的這行代碼。”
Bunni 補充說,攻擊者利用這個錯誤發起了閃電貸攻擊,操縱了池子價格和流動性。
首先,他們通過閃電貸借入 300 萬美元USDT ,並進行多次掉期操縱價格,導致可用的USDC降至僅剩 28 wei。隨後,攻擊者利用舍入錯誤進行了44次小額提現,進一步耗盡了USDC餘額,並大幅降低了礦池的總流動性。
報告稱,在最後一步,攻擊者執行了一次大額掉期交易,抬高了價格變動,然後以操縱的價格進行了一次反向掉期交易。
“總而言之,所有涉及的舍入方向在單獨操作時都是安全的,但當涉及多個操作時,就會導致漏洞利用,”Bunni表示,並補充說他們已經更新了舍入代碼以修復該漏洞。
在區塊鏈安全公司Cyfrin進行分叉測試並確認其安全性後,該平臺已恢復所有網絡的提現功能。但是,存款、掉期和其他功能仍然暫停。
“我們仍在探索需要哪些修復措施才能使Bunni恢復安全,”該平臺表示。“更改空閒餘額更新的舍入方向可以阻止當前的漏洞利用,但目前尚不清楚此更改是否會引入新的攻擊向量。”
Bunni 團隊表示,他們追蹤到被盜資金來自兩個錢包,但由於資金是通過加密貨幣混合器 Tornado Cash 轉移的,因此無法識別攻擊者。Bunni 將向攻擊者提供 10% 的資金作為賞金,以追回剩餘資金,同時還與執法部門合作,並要求中心化交易所凍結相關賬戶。
展望未來,Bunni 表示將進一步開發測試框架,以全面恢復平臺。