Sumer Money 黑客 - 重入和匯率操縱

本文為機器翻譯
展示原文

SumerMoney 專案的sdrETH合約是Compound 的CEther合約的分叉版本,最近遭到攻擊。這種攻擊方式並不新鮮;攻擊者利用重入漏洞來操縱包裝的sdrToken和底層代幣之間的匯率。

概述

攻擊者地址:

https://basescan.org/address/0xbb344544ad328b5492397e967fe81737855e7e77

攻擊交易: https://basescan.org/tx/0x619c44af9fedb8f5feea2dcae1da94b6d7e5e0e7f4f4a99352b6c4f5e43a4661

易受攻擊的合約( sdrETH代幣): https://basescan.org/address/0x7b5969bb51fa3b002579d7ee41a454ac691716dc

漏洞利用分析

攻擊者先進行閃電貸,向 Balancer Vault 借入大量 150 WETH 和 645,000 USDC 。然後,他嘗試將這些資產推入sdrETHsdrUSDC合約中,以鑄造相應的包裝代幣。

以這些資產作為抵押,攻擊者試圖借入sdrETH市場上所有可用的基礎資產,金額約為 150 ETH。借款後,攻擊者立即呼叫repayBorrowBehalf函數,償還借入的ETH加「 1 wei 」。由於repayBorrowBehalf函數使用低階的address.call方法將多餘的金額退還給付款人,因此最終觸發了重入攻擊流程。利用此漏洞,攻擊者可以在更新totalBorrows之前在後備函數中操縱匯率。

查看Compound文件中有關匯率的內容,我們可以看到,如果還款後totalBorrows()沒有正確減少,匯率會比應有的高得多。

然後,攻擊者繼續借入sdrcbETHsdrUSDC市場上的所有剩餘資產。

sdrETH市場匯率被操縱的情況下,攻擊者只需要大約74個sdrETH就可以贖回自己原來的150個ETH,而sdrUSDC則正常贖回。

償還所有貸款並完成攻擊後,攻擊者獲利約 10 cbETH 和 310,000 USDC。

結論

Web3 開發人員在自訂諸如Compound 之類的通用協定時應謹慎行事,尤其是在引入新功能或修改現有功能時。

儘管重入攻擊是智慧合約中眾所周知的漏洞,並且已在許多先前的專案中被利用,但它仍然是 Web3 領域的常見攻擊媒介。這次攻擊凸顯了安全審計的重要性以及開發人員在未來專案中遵循最佳實務的必要性。

來源
免責聲明:以上內容僅為作者觀點,不代表Followin的任何立場,不構成與Followin相關的任何投資建議。
喜歡
收藏
評論