閃電貸+重入攻擊,OUSD損失700萬美金技術簡析

作者:Kong@慢霧安全團隊 據慢霧區情報,2020 年 11 月 17 日,以太坊 DeFi 項目 OUSD 遭受閃電貸攻擊。慢霧安全團隊於第一時間跟進並進行相關分析。以下是慢霧安全團隊針對本次攻擊的簡

作者:Kong@慢霧安全團隊

據慢霧區情報,2020 年 11 月 17 日,以太坊 DeFi 項目 OUSD 遭受閃電貸攻擊。慢霧安全團隊於第一時間跟進並進行相關分析。以下是慢霧安全團隊針對本次攻擊的簡要分析。攻擊過程詳細分析會在稍後發布。如有興趣可保持持續關注。

背景提要

Origin Dollar (OUSD)由Origin Protocol (OUSD)創建,是一種新型的ERC-20 穩定幣,當它仍然放在錢包里時,會自動從DeFi 協議中獲得有競爭力的收益。OUSD 由USDT、USDC 和DAI 等其他穩定幣的1:1 支持。

攻擊流程簡析

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

2. 攻擊者調用 OUSD Vault的 mint 函數,Vault 會先進行一次 rebase 將之前積累的獎勵進行分配,隨後將 750 萬 USDT 從攻擊者合約轉入 OUSD Vault 中。此時 OUSD 合約會鑄出等量的 750 萬 OUSD 代幣給攻擊合約,最後通過 allocate 來結算當前的收益。

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

4. 隨後攻擊合約利用 mintMultiple 函數傳入 DAI 合約地址與攻擊合約的地址,同樣是先進行一次 rebase ,將之前累計的收益進行分配(包含先前轉入的 750 萬 USDT 部分),再通過 transferFrom 先將攻擊合約的 2050 萬 DAI 轉入 Vault 中。隨後將調用攻擊合約的 transferFrom 函數,攻擊者在攻擊合約的 transferFrom 函數中構造再次調用 Vault 合約 mint函數的邏輯來實現重入攻擊。

5. 在上一步驟中轉入 2050 萬 DAI 后通過攻擊合約的 transferFrom 函數再次調用 Vault 的mint 函數。由於重入時傳入 2000 USDT 符合判斷是否調用 rebase 的條件,此時將進行一次 rebase,而由於 rebase 需要 Vault 中的資產總價值和 OUSD 的總鑄幣數有差值才能觸發。按照原本的業務場景是進行 allocate 結算收益后改變 Vault 中的資產總價值然後通過 rebase 進行分配。而由於重入原因並沒有先通過 oUSD.mint 進行鑄幣操作,且攻擊者已先將 2050 萬的 DAI 轉入 Vault 中,所以 Vault 中的資產總價值仍然增加了,導致合約中的資產總價值大於 OUSD 的總鑄幣量。因此 Vault 會將增加的 2050 萬 DAI 當成收益部分進行 rebase 分配。在步驟 3 中由於攻擊者資產已佔 Vault 總價值的一半以上,所以此時攻擊者將憑空獲得超過價值 1025 萬的收益分配。

6. 隨後將通過 oUSD.mint 鑄出 2000 OUSD,並通過 allocate 結算重入時 2000 USDT 的收益(從上一步驟可以看出攻擊合約傳入的 2000 USDT 只是為了滿足調用 rebase 的條件,觸發收益分配而已)。重入結束后仍將通過 oUSD.mint 鑄出之前轉入的 2050 萬 DAI 等值的 OUSD 代幣。

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

總結

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

相關鏈接:

(1) 參考攻擊交易:

0xe1c76241dda7c5fcf1988454c621142495640e708e3f8377982f55f8cf2a8401

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

—-

編譯者/作者:慢霧科技

玩幣族申明:玩幣族作為開放的資訊翻譯/分享平台,所提供的所有資訊僅代表作者個人觀點,與玩幣族平台立場無關,且不構成任何投資理財建議。文章版權歸原作者所有。

0

發表迴響