Furucombo此次事故并不在安全漏洞的范疇內,主要的原因在于官方將未啟用的AaveV2Proxy合約添加進了自己的白名單中,并且未對AaveV2Proxy合約進行初始化,導致攻擊者有機可乘。與Furucombo交互過的用戶應及時撤銷相關授權,避免進一步損失。
據鏈聞消息,著名DeFi項目Furucombo被黑,損失約1500萬美元。慢霧安全團隊第一時間介入分析,并將攻擊細節分享給大家。
攻擊細節分析
本次發生問題的合約在Furucombo本身的代理合約當中。整個攻擊流程很簡單。攻擊者通過設置了Furucombo的AaveV2Proxy的邏輯地址導致后續通過Furucombo代理合約調用的邏輯全部轉發到攻擊者自己的惡意合約上,導致任意資金被盜。
SushiSwap推出DAO支付流DApp Furo:6月9日消息,SushiSwap 宣布推出 DAO 支付流 DApp Furo,該開源應用允許任何 DAO 自動化其貢獻者支付和 Token 釋放計劃。Furo 以模塊化方式構建,允許任何人修改 DApp 以插入現有的 DAO 工具。[2022/6/9 4:14:32]
但是如果事情那么簡單,那么本次分析不值一提。問題遠比想象的復雜得多。
如上圖所示攻擊者的入口在Furucombo的batchExec函數,我們先對batchExec函數進行分析:
Infura、Truffle和MetaMask將支持Optimism主網:ConsenSys表示,Infura、Truffle和MetaMask將支持Optimism主網。Infura將作為Optimism的API,Truffle能夠簡化在Optimism主網部署應用的程序,MetaMask將為用戶提供低摩擦確認。[2021/6/19 23:49:31]
以上是FurucomboProxy合約的batchExec函數的具體實現,其中_preProcess和_postProcess合約分別是對調用前后做一些數據上的處理,不涉及具體的調用邏輯,這邊可以先忽略。我們主要觀察核心的_execs函數:
以太坊基礎設施Infura以太坊API服務中斷:Ethereum和IPFS的API服務供應商Infura表示,其Ethereum Mainnet API服務暫時中斷,團隊正在調查并努力恢復服務功能。注,Infura是由開發者MichaelWuehler開發的一種基礎設施,可以無需運行全節點,即可讓去中心化應用在以太坊上處理信息。一些最流行的去中心化應用或者協議,例如以太坊錢包MetaMask或者去中心化交易所協議0x,都依靠Infura向以太坊主網播送交易數據和智能合約,Infura處理每日高達130億次的請求。[2020/11/11 12:19:06]
通過對execs代碼的分析不難發現,函數的主要邏輯是對configs數組的數據做檢查,并根據configs數組的數據對data進行一些處理。但是回顧上文中攻擊者的調用數據,不難發現攻擊者的調用數據中,configs的數據是一個0地址:
動態 | 黑石控股的印度科技公司與Bitfury合作貿易融資服務項目:據Cointelegraph消息,由美國跨國私人股本公司黑石集團控股的印度科技公司Mphasis與區塊鏈科技巨頭Bitfury合作開發了一個貿易融資項目。為了開發聯合貿易融資服務,Mphasis將利用Bitfury的開源框架構建區塊鏈應用程序Exonum。 Bitfury首席執行官Valery Vavilov在一份聲明中強調,該合資公司的目標是通過創建可互操作的系統。[2019/5/28]
這里有一個trick,由于0地址是一個EOA地址,所有對EOA地址的函數調用都會成功,但是不會返回任何結果。結合這個trick,execs函數中的關于configs數據的部分可以先暫時忽略。直接看到最后的核心_exec函數:
動態 | Bitfury新體系使用區塊鏈技術管理醫療數據權限:據Cointelegragh4月5日報道,Bitfury集團和醫療數據公司Longenesis聯合推出醫療保健行業基于區塊鏈的新體系,其解決了用戶同意管理問題,以簡化數據收集醫學研究。所有數據和用戶同意更新都會記錄在ExonumTM區塊鏈上,并帶有時間戳以供將來審核。據稱該解決方案既可以用作完整的數據管理系統,也可以用作存儲用戶同意的現有數字系統的附件。[2019/4/5]
_exec函數的邏輯也很簡單,在校驗了_to地址后,直接就將data轉發到指定的_to地址上了。而通過對攻擊交易的分析,我們能發現這個_to地址確實是官方指定的合法地址。
最后一步,便是調用_to地址,也就是官方指定的AaveV2Proxy合約的initialize函數,將攻擊者自己的惡意地址設置成AaveV2Proxy合約的邏輯地址。通過對Furucombo合約的分析,可以發現整個調用流程上沒有出現嚴重的安全點,對調用的地址也進行了白名單的檢查。那么問題只能是出在了對應要調用的代理邏輯上,也就是AaveV2Proxy合約。
我們直接分析AaveV2Proxy合約的initialize函數的邏輯:
可以看到initialize函數是一個public函數,并在開頭就檢查了_implementation是否是0地址,如果是0地址,則拋出錯誤。這個檢查的目的其實就是檢查了_implementation是否被設置了,如果被設置了,就無法再次設置。根據這個設置,不難想出initialize這個函數只能調用一次。除非AaveV2Proxy從來沒有設置過_implementation,否則這個調用是不會成功的。難道Furucombo真的沒有設置過對應的_implementation嗎?帶著這樣的疑問,我們檢查了交易內的狀態變化。如下:
可以看到,交易中改變了存儲位置為0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc的內容,而寫入的內容正是攻擊者自己的惡意合約地址0x86765dde9304bea32f65330d266155c4fa0c4f04。
而0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc這個位置,正是_implementation數據的存儲地址。
也就是說,官方從來沒有設置過AaveV2Proxy合約的_implementation地址,導致攻擊者鉆了這個空子,造成了Furucombo資產損失。
總結
通過對整個事件的分析來看,Furucombo此次事故并不在安全漏洞的范疇內,主要的原因在于官方將未啟用的AaveV2Proxy合約添加進了自己的白名單中,并且未對AaveV2Proxy合約進行初始化,導致攻擊者有機可乘。
建議
目前,由于Furucombo遭受攻擊,導致任何將代幣授權過給Furucombo合約(0x17e8ca1b4798b97602895f63206afcd1fc90ca5f)的用戶都將面臨資金損失的風險。
慢霧安全團隊建議與Furucombo交互過的用戶檢查是否有將相關代幣授權給Furucombo合約。如有授權,應及時撤銷相關授權,避免進一步損失。
這周我們給大家安排了一個非常詳細的市場復盤。我們將通過對比特幣市場的結構進行微觀和宏觀的分析,再結合一些獨特的見解,來判斷我們現在到底處于牛市的哪個階段.
1900/1/1 0:00:00摘要: 自年初以來,Cardano的代幣ADA的價格上漲了近600%。這是目前少數幾個表現良好的頭部代幣之一。對于價格上漲,有兩種看似合理的解釋.
1900/1/1 0:00:00頭條 ▌V神:即使有Rollups也還是需要分片2月28日消息,V神今晚面向國內用戶進行了AMA問答,他認為,即使Rollups能使以太坊交易量提升100倍,以太坊還是需要分片.
1900/1/1 0:00:00從22日暴跌那一天,幾乎每次大跌,都有幣友在群里、或者私聊小蜜蜂問“是不是熊市來了?”小蜜蜂每次都回答說“我覺得牛還在”。其實,偶爾我也會有一點恐慌.
1900/1/1 0:00:00上周,颯姐團隊通過一則案例介紹了BTC礦機丟失的民事救濟途徑,幾位讀者后臺留言表示對比特幣委托理財糾紛也很關注。今日,颯姐團隊再分享一個案例,看看委托他人代買加密貨幣的法律風險.
1900/1/1 0:00:002021年2月22日,Findora?基金會首席董事PaulSherer和BSN國際首席架構師HenryMa在Findora官方Telegram頻道舉辦AMA活動,介紹了此次合作的緣由和愿景.
1900/1/1 0:00:00