原文:《 Cobo DeFi 安全課(上):复盤2022 DeFi 安全大事件

作者:Max,Cobo 安全總監

受Moledao 邀請,Cobo 安全總監Max 近日通過網絡為社區成員分享了一堂DeFi 安全課。 Max 為大家回顧了過去一年多Web3 行業遭遇的重大安全事件,並著重探討了這些安全事件發生的原因以及如何規避,總結了常見智能合約的安全漏洞及預防措施,還對項目方和一般用戶給出了一些安全建議。在此,我們將Max 分享的內容分為兩篇發布,供DeFi 愛好者收藏。

根據慢霧統計,2022 年發生了300 多起區塊鏈安全事件,總涉及金額達43 億美元。

Cobo DeFi 安全課(上):复盤 2022 DeFi 安全大事件

本文詳細講解以下八個典型案例,這些案例損失金額基本都是大於1 億美元,其中Ankr 涉及的金額雖然較小,但也是一個比較典型的案例。

Cobo DeFi 安全課(上):复盤 2022 DeFi 安全大事件

Ronin Bridge

事件回顧:

  • 2022 年3 月23 日,NFT 遊戲Axie Infinity 側鏈Ronin Network 表示,早些時候發現,Sky Mavis 的Ronin 驗證器節點和Axie DAO 驗證器節點遭到入侵,導致在兩筆交易中橋接了17.36 萬枚ETH(當前價值逾5.9 億美元)和2550 萬USD。
  • 美國財政部表示,朝鮮黑客組織Lazarus 與AxieInfinity Ronin Network 6.25 億美元的黑客事件有關。
  • 據媒體引述知情人士透露,黑客通過領英聯繫了Axie Infinity 開發商Sky Mavis 公司的一名員工,經過幾輪面試告知其以高薪被錄用。隨後該員工下載了以PDF 文檔呈現的偽造的「Offer」錄取信,導致黑客軟件滲透到Ronin 的系統,從而黑客攻擊並接管Ronin 網絡上九個驗證器中的四個,只差一個驗證器無法完全控制。隨後,黑客又控制了未撤銷權限的Axie DAO 來實現最終的入侵。

朝鮮黑客團體已經存在很長時間,在Web3 技術還未盛行的時候,已有多起新聞報導一些銀行或大型商業機構遭到入侵。現在,越來越多傳統的黑客團體,以及一些國家級勢力,已從以往盜取數據和信用卡信息的行為,演變成攻擊區塊鏈項目,直接獲得實際利益。

這次事件的攻擊方式非常典型,在傳統的安全領域稱作APT,即高級持續性威脅。黑客團體一旦確定目標,就會通過社會工程學等方法,先控制目標組織內的一台電腦,作為跳板點,以進一步滲透,最終達成攻擊目的。

此事件也暴露出了Axie Infinity 公司員工安全意識較弱,以及公司內部安全體系存在一些問題。

Wormhole

事件回顧:

  • 根據Wormhole 發布針對該事件的報告中指出,此次事件中Wormhole 的漏洞具體是Solana 端核心Wormhole 合約的簽名驗證代碼存在錯誤,允許攻擊者偽造來自「監護人」的消息來鑄造Wormhole 包裝的ETH,共損失約12 萬枚ETH。
  • Jump Crypto 投入12 萬枚以太坊以彌補跨鏈橋Wormhole 的被盜損失,支持Wormhole 繼續發展

Wormhole 遇到的問題主要是代碼層面的,因為它使用了一些廢棄的函數。拿以太坊舉例,初期版本的Solidity 中,有些函數設計不完善,隨著後續的更新逐漸被廢棄。其他生態中也是一樣的情況。因此,建議開發者使用最新版本,以避免出現類似問題。

Nomad Bridge

事件回顧:

  • 跨鏈互操作協議Nomad 橋遭受黑客攻擊,是由於Nomad 橋Replica 合約在初始化時可信根被設置為0x0,且在進行可信根修改時並未將舊根失效,導致了攻擊者可以構造任意消息對橋進行資金竊取,攻擊者能夠從攻擊中榨取超過1.9 億美元的價值。
  • 黑客正是利用該漏洞,找一筆有效交易反復發送構造好的交易數據抽取跨鏈橋被鎖定的資金,從而導致Nomad 上鎖定的資金被幾乎全數盜走。
  • 派盾(PeckShield) 監測顯示,Nomad 被攻擊事件中,約41 個地址獲利約1.52 億美元( 佔80%) ,包括約7 個MEV 機器人( 約710 萬美元)、Rari Capital 黑客( 約340 萬美元) 和6 個白帽黑客( 約820 萬美元),約10% 的ENS 域名地址獲利610 萬美元。

Nomad Bridge 這個事件很典型,本質上是因為它的設置在初始化的時候存在一些問題,如果黑客找到一批曾經有效的交易然後重新廣播出去的話,那麼那筆有效交易涉及的資金就會重新再去執行,並將收益返回給黑客。在整個以太坊生態中,參與者有很多,除了項目方和參與者之外,還有很多MEV 機器人。在這個案例中,當自動化的機器人發現了這筆攻擊交易無論誰廣播出去,發出廣播這個人都會得到收益。只要能覆蓋Gas 費,大家都多去廣播,所以整個事件就變成了一個搶錢事件。這次事件涉及到的地址非常多,雖然事後項目方找到一些ENS 以及一些白帽黑客的地址,追回一部分資金,但絕大部分資金都沒有被追回來。如果黑客用一個非常乾淨的設備,非常乾淨的地址的話,是很難從一些數據關聯的角度找到背後的人是誰。

雖說像Google、微軟、Facebook、阿里、騰訊等都經受過黑客攻擊,但是他們的程序都是閉源的;而在以太坊生態,或者是整個智能合約生態,很多程序都是開源的,對於黑客來講,分析開源的實際上是相對簡單的。所以當項目有漏洞的時候,基本就宣布了這個項目的失敗。

Beanstalk

事件回顧:

  • 基於以太坊的算法穩定幣項目Beanstalk Farms 在這次閃電貸攻擊中的損失約為1.82 億美元,具體資產包括79238241 枚BEAN3CRV-f、1637956 枚BEANLUSD-f、36084584 枚BEAN 和0.54 枚UNI-V2_WETH_BEAN。攻擊者獲利超8000 萬美元,包括約24830 枚以太坊以及3600 萬枚BEAN 。
  • 本次攻擊的主要原因在於提案的投票與執行兩階段間無時間間隔,導致攻擊者在完成投票後未經社區審核可以直接執行惡意提案。
  • 攻擊過程:
  1. 提前一天購買代幣並質押獲取提案資格,創建惡意提案合約;
  2. 通過閃電貸獲取大量代幣投票惡意合約;
  3. 惡意合約執行,完成套利。

Beanstalk 也是很典型的案例,黑客沒有用到什麼漏洞,只是利用了項目的一個機制。這個項目的機制是任何人抵押代幣之後可以提交提案,提案也是一個合約。攻擊者在實施攻擊的前一天買了一定的代幣,然後提交了一個惡意的提案,提案在24 小時之後就可以被投票,投完票之後沒有任何時間窗口,沒有任何時間鎖,投票被通過,就可以立刻執行。

現在很多項目都講社區自治,用純去中心化的方式,就會出現很多問題。比如提案,每一個提案是否有審核機制?一個提案到底是正常的提案還是惡意的提案?提案如果被通過,閃電貸過來直接抵押投票就有用,還是創建一種機制必須要staking 一定的時間,甚至是發放投票代幣才可以?以及提案通過之後到執行這個階段,到底應不應該有一個時間鎖?理論上是應該有的,這樣的話大家只要看在時間鎖內的操作,給了大家一個出逃的機會,如果沒有的話,假如執行的是一個惡意操作,誰也跑不了。

Wintermute

事件回顧:

2022 年9 月21 日早上,Evgeny Gaevoy 在推特上公佈被盜事件進展,稱Wintermute 確實曾於6 月份使用Profanity 和一個內部工具來創建錢包地址。這樣做的原因是優化手續費,而不只是為了創建靚號,並稱在上週得知Profanity 存在漏洞後,Wintermute 加速棄用舊密鑰。但由於內部(人為)錯誤,調用了錯誤的函數,因此Wintermute 沒有刪除受感染地址的簽名和執行操作。

我們可以看到網上很多前面有八個0 這種號,以太坊地址中的0 越多,手續費就越低,所以很多MEV 的搶跑機器人和項目方都比較喜歡用,尤其是一些相對高頻操作的。

Wintermute 是一家做市商,當時他們把很多代幣發到一個合約裡,用靚號生成程序生成合約地址。這個合約的Owner 也是一個靚號,剛好非常不巧的是這個Owner 靚號私鑰被人給強算出來了,合約裡的錢直接都被轉走了。

當我們在網上使用一種開源工具的時候,一定要有接受可能帶來一些不好後果的準備。當使用一個外部程序的時候,強烈建議要對它進行一個相對比較充分的安全評估。

Harmony Bridge

事件回顧:

  • Horizon 跨鏈橋損失逾1 億美元,包括超1.3 萬枚以太坊及5000 枚BNB。
  • Harmony 創始人稱,Horizon 被攻擊是由私鑰洩露導致。
  • 據彭博社報導,根據區塊鏈研究公司Elliptic 的最新分析,被稱為Lazarus Group 的疑似朝鮮黑客組織被認為是在Harmony 跨鏈橋Horizon 盜取1 億美元的幕後黑手。 Elliptic 的分析強調了此次黑客事件中指向Lazarus Group 的關鍵因素,包括自動存入Tornado.Cash 以模擬Ronin Bridge 事件的程序化洗錢,以及盜竊的時間等。

Harmony 這個事件沒有公佈具體的細節,但最後的報導說可能還是朝鮮黑客集團,如果是朝鮮黑客組織的話,與Ronin Bridge 攻擊手法是一致的。朝鮮的黑客組織這些年非常活躍,尤其是針對幣圈,最近很多公司都受到過他們的釣魚攻擊。

Ankr

事件回顧:

  • Ankr: Deployer update 合約。
  • Ankr: Deployer 給Ankr Exploiter 轉了BNB。
  • Ankr Exploiter 通過更新後合約的鑄幣方法進行鑄幣。
  • 被憑空鑄造出10 萬億枚aBNBc,黑客A 將aBNBc 通過PancakeSwap 兌換出500 萬枚USDC,掏空了交易池,導致aBNBc 幾乎歸零;,黑客A 後續將幣跨到以太坊,並轉入Tornado Cash。
  • 黑客A 鑄幣之後的約半小時,aBNBc 暴跌,產生了套利機會,套利者B 利用借貸協議Helio 的預言機6 小時平均加時權重的設置,利用aBNBc 在市場上和在Helio 系統中的價差將其換成hBNB,並將hBNB 質押換出穩定幣HAY,並將其換成BNB 和USDC ,總共套出超過1700 萬美元等值的穩定幣和BNB,基本掏空HAY 的交易對池子。
  • Ankr 將從1500 萬美元恢復基金中調資購買增發的HAY 以補償攻擊事件受害者

Ankr 的整體的損失不大,我們單獨來說一下。因為現在很多DeFi 的項目都是樂高積木,A 依賴B、B 依賴C,各種組裝,那麼當鏈條中其中某一環節出現問題的時候,整個鏈條中的上游下游可能全部都受影響。

Cobo DeFi 安全課(上):复盤 2022 DeFi 安全大事件

後來Ankr 發文說明了事件發生的緣由:歸結於一個已離職的內部員工作惡。暴露的問題:首先,Staking 合約Owner 是一個EOA 賬戶而不是多簽,本質上來講誰掌握私鑰,誰就能控制智能合約,這是非常不安全的;其次,Deployer 的私鑰又能被所謂的核心員工所掌控,甚至是離職之後依然可用;也就是說整個內部安全體系基本沒有起到什麼作用。

Mango

事件回顧:

  • 黑客使用了兩個賬戶一共1000 萬USDT 起始資金。
  • 第一步,黑客首先向Mango 交易平台A、B 地址分別轉入500 萬美元。
  • 第二步,黑客通過A 地址在Mango 上利用MNGO 永續合約做空平台Token MNGO,開倉價格0.0382 美元,空單頭寸4.83 億個;與此同時,黑客在B 地址做多MNGO,開倉價格0.0382美元,多單頭寸4.83 億個。 ( 多空雙開的原因在於,Mango 平台深度較差,如果不和自己做對手盤,倉位就很難開到這麼高)
  • 第三步,黑客轉身拉盤多個平台(FTX、Ascendex) 上MNGO 的現貨價格,致使價格出現5-10 倍的增長,該價格通過Pyth 預言機傳遞到Mango 交易平台,進一步推動價格上漲,最終Mango 平台上MNGO 價格從0.0382 美元拉升至最高0.91 美元。
  • 第四步,黑客的多頭頭寸收益為4.83 億個*(0.91 美元- 0.0382 美元)= 4.2 億美元,黑客再利用賬戶淨資產從Mango 進行借貸。好在平台流動性不足,黑客最終只借出近1.15 億美元資
  • 攻擊發生後,黑客發布了一項新提案,表示希望官方利用國庫資金(7000 萬美元) 償還協議壞賬。據了解,目前國庫資金約為1.44 億美元,其中包括價值8850 萬美元的MNGO Token 以及近6000 萬美元的USDC。黑客表示,如果官方同意上述方案,將返還部分被盜資金,同時希望不會被進行刑事調查或凍結資金。 「如果這個提案通過,我將把這個賬戶中的MSOL、SOL 和MNGO 發送到Mango 團隊公佈的地址。Mango 國庫將用於覆蓋協議中剩餘的壞賬,所有壞賬的用戶將得到完整補償.... ..一旦Token 如上述所述被送回,將不會進行任何刑事調查或凍結資金。」
  • 據CoinDesk 報導,此前公佈身份的Mango 攻擊者Avraham Eisenberg 2022 年12 月26 日在波多黎各被捕,Avraham Eisenberg 面臨商品欺詐和商品操縱的指控,這些指控可能會受到罰款、監禁的懲罰。

Mango 這個事件可以定義成安全事件,也可以定義為套利行為,因為問題不是安全漏洞,而是業務模式漏洞。其交易品類中包括BTC、ETH 等市值較高的幣種,也有MNGO 這樣的小幣種,而這種小幣種在熊市流動性不足時,只要花很少的錢可能就把幣價拉起來,這種幣價操控行為使永續合約的平台的頭寸管理變得十分困難。

所以作為項目方,要充分考慮到各種場景,在測試的時候,要把所有超出預期的場景都包含在測試用例中。

而作為普通用戶,去參與某個項目的時候,不能只盯著收益,還要多考慮考慮本金安全。拋開安全漏洞層面,要花心思去看一下它的業務模式有沒有一些漏洞可能被利用。