8 月 30 日,Cream.Finance 遭到重入攻擊,PeckShield 第一時間預警並定位。Etherscan 數據顯示,2 名攻擊者共進行了 17 筆交易,竊取了以太幣、 AMP 、Cream Ether 等加密貨幣,損失超過 1,800 萬美元。
(前情提要:台灣Defi | Cream Finance再遭閃電貸駭客攻擊,損失1,800萬美元的 ETH, AMP)
由於 AMP 支持類似 ERC-777 的貨幣標準,而它的特性與某些協議不相兼容。此次 Cream.Finance 的重入攻擊正是操縱了此漏洞。
攻擊者總共發起來17 筆攻擊交易, PeckShield「派盾」簡述其中一筆交易的攻擊過程:
首先,攻擊者創建攻擊合約 A,從 UniSwap V2 中借出閃電貸 500 WETH;
第二步,攻擊者將所借 500 WETH 質押到 Cream.Finance,獲得 24,172.2 crETH;
第三步,攻擊合約利用第二步所獲得的質押物,通過函數 CErc20Delegator.borrow() 借出 1,948 萬 AMP。同時,利用重入漏洞,在用戶的資料未更新前,又借出 crETH 代幣,獲得 355 ETH。
第四步,攻擊者創建攻擊合約 B,並將 974 萬 AMP 代幣從攻擊合約 A 轉入攻擊合約 B 中。因為第三步的重入攻擊,攻擊攻擊合約 A 已經資不抵債。所以攻擊者利用攻擊合約 B 中的 974 萬 AMP,清算了攻擊合約 A,並獲得 9,068.6 crETH。
第五步,攻擊合約 B 贖回 9,068.6 crETH,獲得 187.58 ETH;此時, 合約 B 的 balanceof() 為 187.58 WETH;
第六步,合約 B 將 187.58 WETH 轉給合約 A,並調用函數 selfdestruct();合約 A 的餘額為 542.58 ETH;
最終,攻擊者歸還閃電貸,獲利 1,880 萬美元。
防禦方法
在進行代幣交換的時候,先扣除用戶的代幣,再將 ETH 發送給用戶。
多個合約進行交互的時候需要考慮 DeFi 業務組合可能存在的系統性風險問題,平台方不僅要確保在產品上線前有過硬的程式碼審計和漏洞排查,還要在不同產品做業務組合時考慮因各自不同業務邏輯而潛在的系統性風控問題。
📍相關報導📍
被誤解的閃電貸:我只是一個工具5月DeFi安全事件25起、BSC占15起
史上最大遭駭案》Poly駭客已還「6億美元」近全數,霸氣拒絕Defi抓漏獎金!
新手必讀 | DeFi 發生史上最大駭客案,普通人怎避開重重陷阱?
讓動區 Telegram 新聞頻道再次強大!!立即加入獲得第一手區塊鏈、加密貨幣新聞報導。
LINE 與 Messenger 不定期為大家服務