OUSD 損失 700 萬美金事件分析

據慢霧區情報,11月17日,以太坊DeFi項目OUSD遭受閃電貸攻擊。慢霧安全團隊針對本次攻擊進行了簡要分析,如下:1...

據慢霧區情報, 11 月 17 日,以太坊 DeFi 項目 OUSD 遭受閃電貸攻擊。慢霧安全團隊針對本次攻擊進行了簡要分析,如下:

1. 攻擊者使用 dydx 閃電貸借出 70000 個 ETH,隨後通過 Uniswap 將其兌換為 USDT 和 DAI。

2. 攻擊者調用 OUSD Vault的 mint 函數,隨後將 750 萬 USDT 從攻擊者合約轉入 OUSD Vault 中。

3. 在攻擊者轉入 750 萬之前,Vault 的價值約為 7018138 美元。攻擊者轉入 750 萬 USDT 后將佔 Vault 總價值的一半以上。

4. 隨後攻擊合約利用 mintMultiple 函數傳入 DAI 合約地址與攻擊合約的地址,將調用攻擊合約的 transferFrom 函數,攻擊者在攻擊合約的 transferFrom 函數中構造再次調用 Vault 合約 mint 函數的邏輯來實現重入攻擊。

5. 在上一步驟中轉入 2050 萬 DAI 后通過攻擊合約的 transferFrom 函數再次調用 Vault 的 mint 函數。在步驟 3 中由於攻擊者資產已佔 Vault 總價值的一半以上,所以此時攻擊者將憑空獲得超過價值 1025 萬的收益分配。

6. 隨後將通過 oUSD.mint 鑄出 2000 OUSD,並通過 allocate 結算重入時 2000 USDT 的收益。重入結束后仍將通過 oUSD.mint 鑄出之前轉入的 2050 萬 DAI 等值的 OUSD 代幣。

7. 最後 Vault 的總價值約為 3501 萬美元,但攻擊者所擁有的價值超過 3825 萬美元,因此攻擊者用大部分的 OUSD 去 Vault 進行贖回操作,將 Vault 基本提空,而其餘的 OUSD 是通過 Uniswap 和 Sushiswap 的 OUSD - USDT 池將 OUSD 換成 USDT 來增加收益。

總結:此次攻擊關鍵在於調用外部合約造成的重入問題與 Vault 的 rebase 收益分配機制相結合,導致攻擊者可以通過重入來憑空獲得巨額的收益分配。針對此類情況,慢霧安全團隊建議對傳入資產進行檢查后,對不在白名單內的資產直接進行回滾,並使用防重入鎖以避免重入攻擊。

本文鏈接:https://www.8btc.com/article/670382
轉載請註明文章出處

0

發表迴響