KeyFrame內部研究專用

Favorite DeFi Vulnerabilities, Mehdi Zerouali - DeFi Security Summit 2022

DeFi Security Summit - DSS·10月19日週三·17 min英文

三句話摘要

Sigma Prime安全團隊發現的主要DeFi智能合約漏洞類型與審計案例分析 DeFi安全需透過自編測試、設計審查、覆蓋率引導模糊測試等多維度防護,應對從符號錯誤到密碼學設計的全譜系威脅。 代碼審查必須包含自編測試用例,不信任客戶提供的測試。在審計Synthesis時,V1通過但V2重新測試失敗,最後發現客戶移動了右括號改變運算順序。清晰的GitHub diff UI容易發現此類細微錯誤,但沒有工具支持時極易遺漏。

重點整理

重點
  • 1

    代碼審查必須包含自編測試用例,不信任客戶提供的測試。在審計Synthesis時,V1通過但V2重新測試失敗,最後發現客戶移動了右括號改變運算順序。清晰的GitHub diff UI容易發現此類細微錯誤,但沒有工具支持時極易遺漏。

  • 2

    代理模式初始化漏洞風險極高。若實現合約未初始化或被初始化後能向攻擊者控制的合約發起委託調用,攻擊者可觸發自毀導致實現合約消失,不僅造成資金損失還可癱瘓整個協議。Wormhole因此類漏洞支付1000萬美元漏洞賞金,創史上最高記錄。

  • 3

    內部會計漏洞多來自份額與金額混淆、舍入誤差、代幣合約餘額操縱。看似微小的會計問題實際可導致整個協議失效或資金凍結,特別當開發者對代幣餘額做假設但攻擊者能操縱餘額時。

  • 4

    複雜協議的非原子部署在競爭環境中容易被攻擊。Rocketpool需部署26-28個合約執行數百次EVM調用才能達可運行狀態,無法一次部署。在信標鏈初期的競爭中,攻擊者可監控內存池並通過惡意合約在初始化過程中劫持,導致協議發布困難。

實用技巧與重點

乾貨
  • 客戶與審計案例:
  • Synthesis — 2019年以太坊第一個收益農耕合約,發現整數溢出、重入問題、運算順序錯誤
  • Wormhole — 1000萬美元漏洞賞金(代理初始化漏洞)
  • Rocketpool — 26-28個合約部署,需數百次EVM調用
  • 工具與框架:
  • 測試框架:Brownie、Foundry(Paradigm開發)
  • 模糊測試方法:覆蓋率引導的白盒結構模糊測試
  • 安全評估流程:
  • V1報告提交 → 客戶修復決策 → V2協議提交 → 重新測試階段 → 驗證修復有效且無新漏洞
  • 具體漏洞指標:
  • CVE 2021-3121(Skippy花生醬漏洞)— Google GoGo protobuf庫整數溢出,CVSS評分9.8,影響Docker、Kubernetes
  • BLS聚合簽名 — 以太坊共識層大量使用,支持數十億用戶
  • 默克爾樹位圖問題 — 樹深度<256位時,同一交易可對應多條路徑導致重放攻擊

結論

結論

DeFi安全需透過自編測試、設計審查、覆蓋率引導模糊測試等多維度防護,應對從符號錯誤到密碼學設計的全譜系威脅。

完整解析

詳細

Sigma Prime是澳洲總部的區塊鏈安全諮詢公司,由安全研究人員、學者與開發人員組成,專長於EVM和非EVM智能合約審計、共識機制審查、新密碼原語研究,同時維護以太坊共識層Rust客戶端Lighthouse。演講分享了近年在DeFi審計中的典型發現。

首先是看似微小但致命的符號錯誤。2019年審計Synthesis協議(以太坊第一個收益農耕合約)時,V1審計通過,但V2重新測試的自編測試突然全部失敗。反覆運行後確認非測試問題,深入調查才發現客戶在提交V2時移動了括號位置,改變了運算順序。這突出了自編測試的價值——GitHub清晰的diff UI下易被發現,但沒有工具支持時容易被遺漏。

代理模式漏洞是過去數年最頻繁的發現。代理合約管理狀態(餘額、管理員權限),實現合約內含協議邏輯,兩者透過委託調用連接。問題在於開發者經常遺漏初始化實現合約,更危險的是,若實現合約能向攻擊者控制的合約發起委託調用並自毀,整個實現合約就會消失,導致協議癱瘓。Wormhole橋因此類漏洞支付了歷史最高的1000萬美元漏洞賞金。

內部會計問題是DeFi的頻繁陷阱。許多合約引入「份額」概念同時處理金額,兩者混淆易導致嚴重漏洞。舍入誤差或殘留零碎金額看似無害,實則可導致整個協議失效。若攻擊者能操縱代幣合約餘額而開發者對餘額做假設,後果將極其糟糕。不當會計通常導致資金凍結。

複雜協議的非原子部署在競爭激烈的環境中風險巨大。流動性質押協議Rocketpool需部署26-28個合約並執行數百次EVM調用才能達到可運行狀態,無法塞進區塊gas限制,必然分多次部署。信標鏈初期的激烈競爭中,攻擊者監控內存池,在合約A、B、C部署過程中插入惡意合約,將後續合約與惡意合約關聯,導致開發團隊發布協議極其困難。

智能合約錢包常見重放攻擊——簽名數據因缺nonce保護,同一簽名可被重複使用直至餘額耗盡。新密碼原語如BLS簽名聚合雖在以太坊共識層成功應用,但若實現不當易受流氓公鑰攻擊:攻擊者選擇公鑰使其否定所有其他公鑰,產生指向無窮遠點的聚合簽名,基本上能為任何消息作證。

默克爾樹證明處理不當也常見。橋接合約基於默克爾樹打包交易,執行需提交證明與路徑。若路徑用位圖記錄執行狀態且樹深度小於256位,同一交易可對應多條不同路徑,導致重放攻擊——攻擊者找到不同方式表示同一交易,清空合約餘額。

漏洞還出現在鏈下組件。CVE 2021-3121(「Skippy花生醬漏洞」)影響Google GoGo protobuf庫,被Docker、Kubernetes等廣泛使用。源於整數溢出導致索引越界,攻擊者構造惡意數據包致中繼節點宕機,若點對點傳播在反序列化前發生,一個數據包足以癱瘓整個網絡。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「Web3 安全」的內容

IF YOU OWN XRP YOU NEED TO SEE THIS PRICE MANIPULATION! ⚠️
8 min
Web3 安全英文8月14日

IF YOU OWN XRP YOU NEED TO SEE THIS PRICE MANIPULATION! ⚠️

Zach Humphries

  • 機構支撐的積極意義:價格操縱常被視為負面,但Ripple掌握大量XRP供應與escrow,在熊市期間提高價格下限,實際上替零售投資者鎖定了低風險的積累區間,這不是剝削而是市場穩定機制。
  • 歷史模式驗證:2024年7月至11月XRP在50美分附近橫盤整理,低點觸及42美分(wick),高點65美分;隨後11月5日至12月5日單月上漲456%,年底到2025年初累計漲幅534%,這個歷史周期正在1美元價位重演。
  • 比特幣聯動邏輯:講者在4-5月就預測「如果比特幣跌至60k以下,XRP會跌至1美元或更低」,此預測精準應驗,反映出熊市中兩者的明確連動關係。
Minimmit, Multimmit and the New Consensus Frontier with Patrick O'Grady
72 min
Web3 安全英文PODCAST8月5日

Minimmit, Multimmit and the New Consensus Frontier with Patrick O'Grady

Zero Knowledge

  • 反向 Linux 架構:Commonware 刻意暴露棧各層級控制,讓開發者自訂執行環境、共識機制、密碼學實現,而非像 Cosmos SDK 只允許應用層以上定制。2-3 個月能組裝一條定製鏈,代價是額外深度但回報是長期維護成本降低及效能優化彈性。
  • 容錯假設的典範轉移:Alpine Glow(Solana 2025)實現單輪投票定終的關鍵是將容錯預算分離為獨立的 Byzantine 和 Crash 容限。傳統系統把 33% 當一個整體預算;新模型允許 20% 惡意加 20% 崩潰,打破了 PBFT 理論界線,釋放單輪設計空間。
  • Minimet 與 Multimet 的遞進:Minimet 是 5F+1 設定下的乾淨構造,實現更短視圖延遲;Multimet(剛發布)進一步允許並行 mini-commits 且驗證者可推翻領導者審查,使用者交易在全球分布式網路達到 200-300 毫秒端到端定終。
Private Information Retrieval (PIR) with Alex Hoover
64 min
Web3 安全英文PODCAST7月29日

Private Information Retrieval (PIR) with Alex Hoover

Zero Knowledge

  • PIR 保護的是訪問模式,不是資料本身
  • PIR 與加密不同,它關注的是隱藏「客戶端查詢了什麼」,而非「資料是否加密」。在公開資料庫(如區塊鏈)上,客戶端可以在不洩露查詢對象給伺服器的情況下檢索特定條目,解決了輕量級客戶端的隱私和防審查問題。
  • 客戶端預處理方案是突破瓶頸的關鍵