去中心化交易所 SushiSwap 因智能合約存在漏洞,導致其中一位用戶—— Frog Nation 前財務長 「0xSifu」 被盜走 1,800 枚以太幣,損失超過 300 萬美元。對此,Sushiswap「主廚」、執行長 Jared Gray 表示,Sushi 的「RouteProcessor2 」合約存在審批錯誤,證實為攻擊破口,正與安全團隊合作解決問題,呼籲用戶盡快撤銷對該合約的授權。
Jared Grey 後來在說明事態進展時提到,大部分受影響的資金都在白帽安全流程中被保住,已成功追回逾 300 枚失竊的以太幣,但還有近 700 枚以太幣仍被卡在 Lido 的獎勵金庫中,目前正與對方聯繫以追討被盜資金。
此外,SushiSwap 技術長 Matthew Lilley 澄清,SushiSwap 協議和 UI 並無風險,所有 RouterProcessor2 合約的相關問題都已從前端移除,所有 LPing/當前交易活動都可以安全進行,SushiSwap 將持續監控、追討被盜資金。
區塊鏈和智能合約安全公司 Peckshield 解釋說,存在漏洞的合約「已被部署在多個區塊鏈中」以複製攻擊。
DefiLlama 創辦人 0xngmi 提到,該攻擊似乎只針對那些在過去四天內使用過 Sushiswap 的用戶,並呼籲用戶把存在受影響錢包中的資金轉走。 0xngmi 表示,他已建立一個網站,可供用戶檢查地址是否受到 SushiSwap 合約攻擊事件的影響,同時知道哪些代幣的授權需要撤銷。
另根據慢霧安全團隊情報分析,SushiSwap RouteProcessor2 遭到攻擊的事件經過如下:
-
- 根本原因在於 ProcessRoute 未對用戶傳入的 route 參數進行任何檢查,導致攻擊者利用此問題構造了惡意的 route 參數使合約讀取的 Pool 是由攻擊者創建的。
- 由於在合約中並未對 Pool 是否合法進行檢查,直接將 lastCalledPool 變量設置為 Pool 並調用了 Pool 的 swap 函數。
- 惡意的 Pool 在其 swap 函數中回調了 RouteProcessor2 的 uniswapV3SwapCallback 函數,由於 lastCalledPool 變量已被設置為 Pool,因此 uniswapV3SwapCallback 中對 msg.sender 的檢查被繞過。
- 攻擊者利用此問題在惡意 Pool 回調 uniswapV3SwapCallback 函數時構造了代幣轉移的參數,以竊取其他已對 RouteProcessor2 授權的用戶的代幣。
慢霧安全團隊建議,RouteProcessor2 的用戶及時撤銷對 0x044b75f554b886a065b9567891e45c79542d7357 的授權。