DeFi Security 101 2023 - 09 - Mudit Gupta
三句話摘要
DeFi 協議與跨鏈橋接的攻擊與防護——傳統安全與智能合約雙維度的風險分析。 攻擊者只需一個弱點就能成功,防守者必須全面防護,而傳統安全漏洞往往比智能合約漏洞造成更大實損——安全的關鍵是多層防護加開放心態。 攻擊的雙維度性質
重點整理
重點- 1
攻擊的雙維度性質
- 2
傳統安全漏洞(單點故障、社工釣魚、密鑰管理不當)在實際 DeFi 攻擊中比智能合約漏洞更普遍。Multi-Chain 案例最具典型性:所有 MPC 節點運行在同一人的雲服務器上,該人被當局拘捕後團隊無法訪問,資金永久丟失;Ronin 攻擊中 5 台 MPC 服務器有 4 台位於同一集群且互相可訪問,運維員工遭釣魚一人就能淪陷整個系統。
- 3
DAO 重入攻擊的具體機制
- 4
提現函數用 `call` 先將資金轉給調用者(控制權交給對方),再更新餘額為零。攻擊者在接收資金的回調函數中再次呼叫提現,合約因餘額尚未更新而再次轉帳,形成循環。本質上是 Web 2.0 的並發控制問題——正常銀行先扣款再轉帳,但合約順序反了,在時間窗口內可被利用。
- 5
防守與攻擊的非對稱性
- 6
防守者必須確保系統每個環節都安全,攻擊者只需找到一個弱點。審計數量多不等於有效防護——Euler 進行 6 次審計仍被攻擊,因為最終版本代碼只由一家公司審計;新增不必要的功能會增加風險面,每次升級都是新的攻擊窗口。
- 7
橋接安全取決於架構類型
- 8
去中心化橋依賴主鏈驗證與代碼正確性(如 Polygon ZKVM);MPC 橋(如 Ronin 的 5x9 配置)理論上安全但實踐中傳統安全是主要風險,節點應分布在不同地域和服務商;中心化橋(如幣安橋)完全依賴傳統金融安全實踐(密鑰管理、員工培訓、訪問控制)。
實用技巧與重點
乾貨- 真實攻擊案例與數據:
- Multi-Chain:所有 MPC 節點在同一雲帳戶,創始人被抓 → 妹妹白帽嘗試轉移資金 → 妹妹也被抓 → 資金下落不明
- Ronin 橋:5x9 MPC,4 台在同一集群 + 可訪問第 5 台 + 運維員工釣魚 = 攻擊成功
- Nomad Bridge:邏輯漏洞在審計中被忽略
- Euler:添加新功能引入漏洞,6 次審計但只有最終版本的 1 次審計針對有漏洞的代碼
- Iran Bridge:跨鏈橋攻擊
- 技術要點:
- DAO 攻擊向量:`withdraw`(提現)函數
- 重入漏洞的關鍵:`call` 函數將執行控制權交給接收方
- 預防:先更新狀態再轉帳(檢查-生效-交互模式)
- 橋接架構對比:
- 去中心化橋:以太坊驗證 + 代碼審計,攻擊向量 = 代碼漏洞或攻擊主鏈
- MPC 橋:多方投票(如 2x3、5x9、100 個驗證者),攻擊向量 = 傳統安全漏洞
- 中心化橋:單一實體,攻擊向量 = 密鑰管理、員工培訓、訪問控制
- Polygon PoS 橋:MPC + 100 個去中心化驗證者(混合模式)
- 防守工具與計畫:
- 多層審計(安全公司 + Code Arena、Sherlock)
- 模糊測試(Fuzzing)
- 形式化驗證(Certora)
- 漏洞賞金計畫:Polygon 提供 100 萬美元以上賞金
- 完善的測試用例(大多數漏洞可被測試發現)
- 講者聯繫方式:
- modet.blog
結論
結論“攻擊者只需一個弱點就能成功,防守者必須全面防護,而傳統安全漏洞往往比智能合約漏洞造成更大實損——安全的關鍵是多層防護加開放心態。”
完整解析
詳細這場演講揭示了 DeFi 安全的一個核心真相:最具破壞力的攻擊往往不來自智能合約層面,而來自傳統安全漏洞。講者以 Multi-Chain 案例開場——聲稱是 MPC 橋接協議的項目,實際上把所有 MPC 節點都運行在一個人的雲服務器上。當該人被當局拘捕後,團隊陷入癱瘓。他的妹妹試圖進行白帽操作,侵入哥哥的筆記本電腦和雲帳戶轉移資金,結果第二天也失蹤了。最終資金去向成謎。這不是智能合約的故事,而是一連串傳統安全失敗:為什麼 MPC 協議的所有服務器在同一個帳戶?為什麼普通家庭成員能訪問掌控數百萬美元的關鍵資產?為什麼應急響應系統本身就是單點故障?Ronin 橋攻擊也遵循相似邏輯:5 台 MPC 服務器中 4 台在同一集群且互相可訪問,攻擊者只需釣魚一名運維員工就能獲得對整個系統的控制權。
在智能合約層面,講者分析了歷史上最著名的 DAO 攻擊。攻擊的核心是重入漏洞。提現函數的邏輯是:計算使用者的應得金額 = 使用者余額 × 總供應量,然後通過 `call` 函數將資金轉給使用者,最後將使用者的餘額設為零。問題在於 `call` 函數會將執行控制權交給接收地址的回調函數。攻擊者控制的合約在收到資金時,不會乖乖返回,而是再次呼叫提現函數。由於餘額扣除發生在轉帳之後,合約仍認為攻擊者有可提現的餘額,於是再次轉帳。這個循環可以重複進行直至耗盡合約資金。本質上這是 Web 2.0 中常見的並發控制問題——真實銀行會先檢查並扣除餘額,再進行轉帳和跨行通知,確保狀態一致性。但 DAO 的順序完全反了,在狀態同步的時間窗口內被利用。
講者強調了一個非對稱真理:防守者必須確保系統的每個環節都安全,攻擊者只需找到一個弱點。這對審計的含義是深刻的——Euler 進行了 6 次審計卻仍被攻擊,但這個說法具有誤導性。實際上只有最終版本代碼由一家公司審計過,其他 5 次審計針對的是舊版本。而且 Euler 的漏洞來自於一個「為了增強功能」而添加的特性,這暴露了另一個教訓:不必要的升級會帶來額外風險,每次升級都增加攻擊面。
跨鏈橋接安全因架構類型而異。去中心化橋(如 Polygon ZKVM)的安全完全來自以太坊驗證與智能合約正確性,攻擊向量只有兩個:代碼漏洞或直接攻擊以太坊。MPC 橋採用多個節點投票機制,如 Harmony 的 2x3 配置或 Ronin 的 5x9 配置,理論上節點分布能提升安全性,但實踐中傳統安全(密鑰管理、員工培訓、地理分散)是瓶頸。中心化橋如幣安橋完全依賴傳統金融安全實踐。Polygon PoS 橋採用混合方案——保留了證明機制,但訊息傳遞由 100 個去中心化驗證者負責,兼具兩者優勢。
防守策略需要多管齊下。代碼層面要進行多層審計(包括安全公司和像 Code Arena、Sherlock 這樣的競爭型審計平台)、模糊測試、形式化驗證,以及編寫優秀的測試用例。運營層面則必須重視傳統安全:密鑰絕不能存放在 DevOps 帳戶的熱服務器上,必須是冷錢包加多重簽名;員工必須接受反釣魚培訓;訪問控制要嚴格分層。漏洞賞金計畫也很關鍵——Polygon 提供超過 100 萬美元的賞金,曾通過此計畫發現審計員忽略的重要漏洞。
講者認為未來的機遇在於零知識證明(ZK)擴展技術。解決可擴展性後,交易成本將降到忽視不計的地步,就像互聯網一樣——互聯網從未免費,但成本已低到可以無限使用而無人在意。當區塊鏈達到這個成本水準,將解鎖無數目前因高費而不可行的應用場景。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

