2024 年 7 月 12 日,Dough Finance 遭受攻擊,導致估計損失 180 萬美元。 ConnectorDeleverageParaswap合約中的設計缺陷允許攻擊者觸發DoughDsa從Aave提取抵押品並將其轉移給攻擊者。
概述
攻擊者:
https://etherscan.io/address/0x67104175fc5fabbdb5a1876c3914e04b94c71741
脆弱合約:
https://etherscan.io/address/0x9f54e8eAa9658316Bb8006E03FFF1cb191AafBE6
交易攻擊:
https://etherscan.io/tx/0x92cdcc732eebf47200ea56123716e337f6ef7d5ad714a2295794fdc6031ebb2e
漏洞利用分析
交易完成後,攻擊者在Aave中檢查了Vault的債務餘額,並從Balancer閃貸了USDC以償還Vault 。
然後,該交易呼叫ConnectorDeleverageParaswap ,透過 swapData 中的特定操作來觸發閃貸請求。
連接器從池中啟動閃貸並在executeOperation函數中處理回應。
深入研究ConnectorDeleverage合約中的executeOperation 函數:
此循環中有兩個任意呼叫: Vault.executeAction和weth.transferFrom 。在第一個動作中,保險庫:
金庫合約遵循ConnectorDeleverageParaswap指令,呼叫Aave並提取596 WETH (用作抵押品的質押餘額)。
在接下來的說明中, ConnectorDeleverageParaswap遵循swapData將所有金庫餘額轉移到攻擊合約。有了這些資金,攻擊者就可以兌換成USDC,償還閃貸,並獲得大量的專案資產。
根本原因:
學過的知識
作為開發人員,必須堅持「絕不相信任何輸入」的原則,即使是來自合作夥伴和支持合約的輸入。特別是在任意呼叫的情況下,使用者輸入可以操縱您的合約、提取資金,甚至銷毀合約。









