0xDAO潛在盜幣漏洞發現過程及技術細節解析

2022-04-03 00:04:51

3月2日,0xDAO v2 原計劃上线前的幾個小時,Cobo 區塊鏈安全團隊啓動對該項目的 DaaS 投前例行安全評估工作,隨後快速地在 github 开源的項目代碼中發現了一個嚴重的安全漏洞。經評估,如果 0xDAO v2 此時繼續上线,該漏洞預計會造成數億美金的資產損失。

Cobo 區塊鏈安全團隊立即啓動應急預案,快速通過多個渠道聯系到 0xDAO 項目方,提交該漏洞的完整攻擊流程,緊急叫停了項目上线,隨後協助 0xDAO 項目方對該漏洞進行了修復。 日前,0xDAO 官方發布推文向 Cobo 區塊鏈安全團隊表示了感謝,並且表示會按照嚴重漏洞級別(Critical) 給予 Cobo 區塊鏈安全團隊漏洞賞金獎勵。


      0xDAO潛在盜幣漏洞發現過程及技術細節解析


      0xDAO潛在盜幣漏洞發現過程及技術細節解析

項目方針對漏洞影響的反饋。

於0xDAO

1月21日,0xDAO 項目 v1 版本上线。0xDAO v1 的目的主要是為了提高 TVL 爭奪 Andre Cronje 的 veNFT 的空投份額。項目上线後很短時間內即達到 40 億美金 TVL。在成功奪取到最大 veNFT 最大份額後,0xDAO 進入第二階段。v2 版本的 0xDAO 將成為 Andre Cronje 新項目 Solidly 的收益聚合器(Yield Hub),項目方啓動新的合約开發工作。

本次漏洞出現在 0xDAO v2 版本合約代碼中。

漏洞原理


      0xDAO潛在盜幣漏洞發現過程及技術細節解析


      0xDAO潛在盜幣漏洞發現過程及技術細節解析

UserProxyFactory 創建的 UserProxy 是可升級合約,合約 owner 為用戶地址。用戶可以通過升級合約來任意修改合約代碼及 storage,意味着該合約內容完全是用戶可控的。 UserProxy 合約代碼如下:


      0xDAO潛在盜幣漏洞發現過程及技術細節解析


      0xDAO潛在盜幣漏洞發現過程及技術細節解析

用戶所有操作都將通過 UserProxy 合約作為中間代理與 0xDAO 協議交互。 下面是以用戶執行 deposit 操作為例。UserProxyInterface 的 depositLp 方法實現如下:


      0xDAO潛在盜幣漏洞發現過程及技術細節解析

用戶正常的 deposit 流程為: 1. 用戶首先將自己的 LP token 授權給 UserProxyInterface 合約 2. 用戶調用 UserProxyInterface.depositLp 函數。 3. 根據 depositLp 代碼的邏輯,用戶資產先會轉移到 UserProxyInterface 合約中,再授權給 userProxy 合約。 4. 最後調用 userProxy.depositLp 完成後續的 deposit 操作。


      0xDAO潛在盜幣漏洞發現過程及技術細節解析

漏洞利用

根據前面的漏洞原理,Cobo 區塊鏈安全團隊實現了一個攻擊腳本 Demo,代碼如下:


      0xDAO潛在盜幣漏洞發現過程及技術細節解析


      0xDAO潛在盜幣漏洞發現過程及技術細節解析


      0xDAO潛在盜幣漏洞發現過程及技術細節解析

通過調用上述合約的 run 方法,即可將任意用戶授權給 UserProxyInterface 合約的任意資產轉移到黑客账戶中。完整的復現環境見:https://github.com/CoboCustody/cobo-blog/tree/main/0xdao_exploit在這個復現中,攻擊者通過漏洞成功將受害者地址授權給 UserProxyInterface 合約的 ERC20 Token 全部轉移到了攻擊者地址中。

漏洞修復

經過 Cobo 區塊鏈安全團隊與 0xDAO 項目方的溝通,項目方很快確認了漏洞的存在,並部署了新的合約完成了漏洞修復。漏洞合約https://ftmscan.com/address/0x8dc8105fcc1b13a6ad1db83c35112a230e617e5a#code修復後的合約https://ftmscan.com/address/0xd2f585c41cca33dce5227c8df6adf604085690c2#code核心補丁代碼如下:


      0xDAO潛在盜幣漏洞發現過程及技術細節解析

補丁代碼直接使用 msg.sender 作為 userProxyOwnerAddress 進行後續操作,從而避免了 userProxyOwnerAddress 與 msg.sender 不一致的情況。小結在此 Cobo 區塊鏈安全團隊提醒進行 DeFi 項目投資的機構與個人,在進行投資時要留意在新項目投資中可能存在的安全風險。建議:選擇开源且在上线前經過知名安全廠商進行過代碼審計的項目。選擇非匿名、在業界有一定知名度的項目方團隊。鏈上交易過程中,檢查交互的合約與項目合約地址的一致性,防範前端釣魚攻擊。盡量避免使用 ERC20 無限授權。關注區塊鏈安全事件,發現風險及時響應。Cobo 區塊鏈安全團隊將持續關注區塊鏈、DeFi 安全的前沿攻防技術,保障客戶資產安全,並為整個區塊鏈行業安全水平的提高貢獻自己的力量。

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

推薦文章

btc日內再次下跌 短线應當如何處理?

盡管以太坊現貨ETF獲批是個好消息,但市場反應卻不如預期。在消息公布後,以太坊價格出現了小幅下跌,...

加密蓮
134 3個月前

7月23日、BTC(合約)ETH(合約)行情分析及操作策略

昨日收益還是不錯的,日內給出的現價空單分別止盈我們目標點位,恭喜跟上的朋友喫肉。時間一晃到月底了,...

倪老師
134 3個月前

幣圈院士:血與淚的教訓!交易者為何總是撞死在同一棵樹上?

幣圈院士談。交易市場中的幾種“死法” 在幣圈市場鱗次櫛比的海洋,風起雲湧,時常讓人感到驚手不及。在...

幣圈院士
139 3個月前

7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC

7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC一個引...

168超神
131 3個月前

悅盈:比特幣68000的空完美落地反彈繼續看跌 以太坊破前高看回撤

一個人的自律中,藏着無限的可能性,你自律的程度,決定着你人生的高度。 人生沒有近路可走,但你走的每...

我是周悅盈
111 3個月前

btc完美盈利 晚間波動較大注意

昨日btc空單完美給到,最大化走出一千七百點空間~ btc: 日內开盤下跌繼續測試66000一线,...

加密蓮
121 3個月前