header-langage
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
掃碼下載APP
Partnered With:

慢霧:Furucombo被黑分析

閱讀本文需 10 分鐘
避免過度授權,DeFi的安全任重而道遠。
原文來源:星球日報


慢霧:Furucombo被黑分析


據鏈聞消息,著名 DeFi 項目 Furucombo 被黑,損失超 1500 萬美元。慢霧安全團隊第一時間介入分析,並將攻擊細節分享給大家。


攻擊細節分析


本次發生問題的合約在 Furucombo 本身的代理合約當中。整個攻擊流程很簡單。攻擊者通過設置了 Furucombo 的 AaveV2 Proxy 的邏輯地址導致後續通過 Furucombo 代理合約調用的邏輯全部轉發到攻擊者自己的惡意合約上,導致任意資金被盜。


慢霧:Furucombo被黑分析


但是如果事情那麼簡單,那麼本次分析不值一提。問題遠比想象的複雜得多。


如上圖所示攻擊者的入口在 Furucombo 的 batchExec 函數,我們先對 batchExec 函數進行分析:


慢霧:Furucombo被黑分析


以上是 Furucombo Proxy 合約的 batchExec 函數的具體實現,其中 _preProcess 和 _postProcess 合約分別是對調用前後做一些數據上的處理,不涉及具體的調用邏輯,這邊可以先忽略。我們主要觀察覈心的 _execs 函數:


慢霧:Furucombo被黑分析


通過對 execs 代碼的分析不難發現,函數的主要邏輯是對 configs 數組的數據做檢查,並根據 configs 數組的數據對 data 進行一些處理。但是回顧上文中攻擊者的調用數據,不難發現攻擊者的調用數據中,configs 的數據是一個 0 地址:


慢霧:Furucombo被黑分析


這裏有一個 trick,由於 0 地址是一個 EOA 地址,所有對 EOA 地址的函數調用都會成功,但是不會返回任何結果。結合這個 trick,execs 函數中的關於 configs 數據的部分可以先暫時忽略。直接看到最後的核心 _exec 函數:


慢霧:Furucombo被黑分析


_exec 函數的邏輯也很簡單,在校驗了 _to 地址後,直接就將 data 轉發到指定的 _to 地址上了。而通過對攻擊交易的分析,我們能發現這個 _to 地址確實是官方指定的合法地址。


慢霧:Furucombo被黑分析


最後一步,便是調用 _to 地址,也就是官方指定的 AaveV2 Proxy 合約的 initialize 函數,將攻擊者自己的惡意地址設置成 AaveV2 Proxy 合約的邏輯地址。通過對 Furucombo 合約的分析,可以發現整個調用流程上沒有出現嚴重的安全點,對調用的地址也進行了白名單的檢查。那麼問題只能是出在了對應要調用的代理邏輯上,也就是 AaveV2 Proxy 合約。


我們直接分析 AaveV2 Proxy 合約的 initialize 函數的邏輯:


慢霧:Furucombo被黑分析


可以看到 initialize 函數是一個 public 函數,並在開頭就檢查了 _implpentation 是否是 0 地址,如果是 0 地址,則拋出錯誤。這個檢查的目的其實就是檢查了 _implpentation 是否被設置了,如果被設置了,就無法再次設置。根據這個設置,不難想出 initialize 這個函數只能調用一次。除非 AaveV2 Proxy 從來沒有設置過 _implpentation,否則這個調用是不會成功的。難道 Furucombo 真的沒有設置過對應的 _implpentation 嗎?帶着這樣的疑問,我們檢查了交易內的狀態變化。如下:


慢霧:Furucombo被黑分析


可以看到,交易中改變了存儲位置爲 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 的內容,而寫入的內容正是攻擊者自己的惡意合約地址 0x86765dde9304bea32f65330d266155c4fa0c4f04。


而 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc 這個位置,正是 _implpentation 數據的存儲地址。


慢霧:Furucombo被黑分析


也就是說,官方從來沒有設置過  AaveV2 Proxy 合約的 _implpentation 地址,導致攻擊者鑽了這個空子,造成了 Furucombo 資產損失。


總結


通過對整個事件的分析來看,Furucombo 此次事故並不在安全漏洞的範疇內,主要的原因在於官方將未啓用的  AaveV2 Proxy 合約添加進了自己的白名單中,並且未對 AaveV2 Proxy 合約進行初始化,導致攻擊者有機可乘。


建議


目前,由於 Furucombo 遭受攻擊,導致任何將代幣授權過給 Furucombo 合約 (0x17e8ca1b4798b97602895f63206afcd1fc90ca5f) 的用戶都將面臨資金損失的風險。


慢霧安全團隊建議與 Furucombo 交互過的用戶檢查是否有將相關代幣授權給 Furucombo 合約。如有授權,應及時撤銷相關授權,避免進一步損失。


參考鏈接:


代幣授權檢查地址:https://approved.zone/


攻擊交易:


https://ethtx.info/mainnet/0x6a14869266a1dcf3f51b102f44b7af7d0a56f1766e5b1908ac80a6a23dbaf449


原文鏈接



歡迎加入律動 BlockBeats 官方社群:

Telegram 訂閱群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方帳號:https://twitter.com/BlockBeatsAsia

举报 糾錯/舉報
選擇文庫
新增文庫
取消
完成
新增文庫
僅自己可見
公開
保存
糾錯/舉報
提交