自今年 4 月起, DeFi 項目頻遭重入攻擊,繼 Akropolis、Value Defi 之後,穩定幣項目 Origin Dollar(OUSD)本週二(17)早晨又再傳攻擊事件,造成價值 770 萬美元的 ETH 和 DAI 的損失,以下為攻擊過程詳解。本文由專欄作者
(前情提要:DeFi 再傳「閃電貸攻擊」事件!Origin Dollar遭駭700萬美元,穩定幣OUSD跌逾 85%)
近日,筆者監控到 DeFi 協議 Origin Protocol 穩定幣 OUSD 遭到攻擊,攻擊者利用在衍生品平台 dYdX 的閃電貸進行了重入攻擊(Re-entrancy attack),造成價值 770 萬美元的 ETH 和 DAI 的損失。
重入攻擊是以太坊智能合約上最經典的攻擊手段之一,著名的 the DAO 被盜事件就是攻擊者運用重入攻擊導致以太坊硬分叉,損失價值 5,000 萬美元以太幣。
延伸閱讀:科普|究竟什麼是閃電貸?DeFi 近一個月就連爆 4 起相關攻擊
自今年 4 月起, DeFi 項目頻遭重入攻擊。
4 月 18 日,駭客利用 Uniswap 和 ERC777 標準的兼容性問題缺陷實施重入攻擊;4 月 19 日,Lendf.Me 也遭到類似重入攻擊;11 月 14 日,駭客利用 Akropolis 項目的 SavingsModule 合約在處理用戶儲存資產時存在的某種缺陷連續實施了17 次重入攻擊,損失 203 萬枚 DAI。
台灣時間 2020 年 11 月 17 日,筆者監控到穩定幣 OUSD 遭到重入攻擊。
OUSD 是 Origin Protocol 推出的一種與美元掛鉤的 ERC-20 穩定幣,用戶可通過將基礎穩定幣(例如 USDT、USDC、DAI)存入 Origin 智能合約來鑄造 OUSD 穩定幣,之後該協議會將基礎穩定幣投資於多個 DeFi 協議並進行收益耕作,為 OUSD 持有者賺取回報。
延伸閱讀:DeFi安全漏洞|Akropolis 攻擊事件解析:駭客重現「經典重入攻擊」擄走203萬 DAI
重入攻擊重現,憑空創造 2,050 萬枚 OUSD
筆者通過追蹤和分析發現,首先,攻擊者從 dYdX 閃電貸貸出 70,000 枚 ETH;隨後,在 UniswapV2 中先將 17,500 枚 ETH 轉換為 785 萬枚 USDT,再將所貸剩餘的 52,500 枚ETH 轉換為 2099 萬枚 DAI;
接下來,攻擊者分四次鑄造 OUSD 穩定幣:
第一次通過 mint() 函數鑄造 OUSD 時,攻擊者確實在 Origin 智能合約中存放了 750 萬枚 USDT,並獲得 750 萬枚 OUSD;
第二次通過 mintMultiple() 多種穩定幣函數鑄造 OUSD 時,攻擊者在 Origin 智能合約中存放了 2,050 萬枚 DAI 和 0 枚假「穩定幣」,並在此步驟中透過重入攻擊來攻擊合約。
攻擊者將 2,050 萬枚 DAI 和 0 枚假「穩定幣」存入 VaultCore 中,此時智能合約收到 2,050 萬枚 DAI,在嘗試接收 0 枚假「穩定幣」時,攻擊者利用惡意合約進行劫持,在智能合約正常啟動鑄造 2,050 萬枚 OUSD 之前,調用 mint() 函數,先惡意增發了 2,050 萬枚 OUSD,此次惡意增發由 VaultCore 合約調用rebase() 函數實施。
值得注意的是,為順利實施劫持,攻擊者在上述 mint() 函數調用時,真金白銀地存入了 2,000 枚 USDT,同時獲得第三次鑄幣 2,000 枚 OUSD。
隨後,調用 oUSD.mint() 函數第四次鑄造 2,050 萬枚 OUSD。rebase 指代幣供應量彈性調整過程,即對代幣供應量進行「重新設定」。
在 DeFi 領域有一類代幣擁有彈性供應量機制,即每個代幣持有用戶的錢包餘額和代幣總量會根據此代幣價格的變化而等比例變動。
此時,攻擊者共獲得 2,800.2 萬枚 OUSD,包括抵押的 750 萬枚USDT、2,050 萬枚 DAI 和 2,000 枚 USDT。
由於調用 rebase() 函數,攻擊者所獲得的 OUSD 總計上漲至 33,269,000 枚。
最後,攻擊者先用所獲得的 33,269,000 枚 OUSD 贖回 1,950 萬枚 DAI、940 萬枚 USDT、390 萬枚 USDC;再在 Uniswap 中將 1,045 萬枚 USDT 兌換為 22,898 枚 ETH,將 390 萬枚 USDC 兌換為 8,305 枚ETH,將 190 萬枚 DAI 兌換為 47,976 枚ETH,共計 79,179 枚ETH,並將其中 70,000 枚ETH 歸還到dYdX 閃電貸中。
據筆者統計,攻擊者在此次攻擊中共計獲利 11,809 枚 ETH 和 2,249,821 枚 DAI,合計 770 萬美元。
對於次攻擊事件,Origin Protocol 官方回應稱,正在積極採取措施,以期收回資金。
隨著 DeFi 生態的蓬勃發展,其中隱藏的安全問題也逐漸凸顯,由於 DeFi 相關項目與用戶資產緊密相連,其安全問題亟待解決。對此,
分析:此類重入攻擊的發生主要是由於合約沒有對用戶儲存的 Token 進行白名單校驗。
DeFi 是由多個智能合約和應用所組成的「積木組合」,其整體安全性環環相扣,平台方不僅要確保在產品上線前有過硬的程式碼審計和漏洞排查,還要在不同產品做業務組合時考慮因各自不同業務邏輯而潛在的系統性風控問題。
📍相關報導📍
最慘打臉!Value DeFi 宣稱「可防閃電貸」隔天被駭600萬,駭客留言:你們真的懂閃電貸?
dForce AMA 總整理| 還原 Lendf.Me 遭駭始末,坦言考慮部分中心化機制
讓動區 Telegram 新聞頻道再次強大!!立即加入獲得第一手區塊鏈、加密貨幣新聞報導。
LINE 與 Messenger 不定期為大家服務