KeyFrame內部研究專用

DeFi security Summit 2023 - Session 12: Vulnerabilities & Exploits - Dmitry Khovratovich

DeFi Security Summit - DSS·7月16日週日·21 min英文

三句話摘要

零知識電路編程中的常見安全漏洞與脆弱性分析。 零知識電路的 bug 往往難以察覺且後果嚴重,編程時必須對素域運算、溢位邊界、模運算陷阱保持極度警惕。 執行模型差異:ZK-Rollup 只提交執行証明而非交易本身到鏈上,節點無法看到內部執行步驟,若電路有 bug 且攻擊者生成有效証明,外界無法追蹤真實輸入,難以察覺漏洞被利用,這與以太坊直接執行交易的完全透明性完全相反。

重點整理

重點
  • 1

    執行模型差異:ZK-Rollup 只提交執行証明而非交易本身到鏈上,節點無法看到內部執行步驟,若電路有 bug 且攻擊者生成有效証明,外界無法追蹤真實輸入,難以察覺漏洞被利用,這與以太坊直接執行交易的完全透明性完全相反。

  • 2

    素域運算陷阱:ZK 編程運作在模 P 的素域(P 接近但不等於 2^256),導致溢位結果與 EVM 的模 2^256 截然不同;攻擊者可精心選擇變數利用素域特性(任何非零數都可被整除)來構造無效但有效証明。

  • 3

    約束編程的完整性與健全性:完整性要求每個有效執行都能生成有效証明,健全性要求有效証明必對應有效執行;二者任一失敗都會導致資金損失,但完整性 bug 可能阻止正常提現,健全性 bug 則允許無效交易通過。

  • 4

    高風險場景:算術接近 56 位邊界需逐一範圍檢查、除法結果可能巨大、分支實現需計算所有標誌位、邊界情況(正常代碼無法達到)會被攻擊者利用、密碼學操作易誤用。

實用技巧與重點

乾貨
  • 主講者:Dimitri Coverturvich(ABDK Consulting、以太坊基金會密碼學家)
  • 審計公司:ABDK,與 Mikhail 進行眾多 ZK 項目審計
  • 關鍵數值:ZK 運算在模 P 域,P 為素數且接近(但非)2^256
  • 模運算陷阱公式:a = Q × B + r,在素域中若只約束此式,攻擊者可選 Q = (a - r) / B,利用素域中任何非零數都可整除的性質。
  • 幾何平均數 bug:兩個小於 256 位的數相乘可溢位,需分割成三個區塊用「教科書乘法」處理
  • 模減法:需驗證 r < B(非 r ≤ B),且必須約束 r 確實小於 B
  • 審計資源:ABDK 音訊資料庫記錄各 ZK 項目發現的嚴重與非嚴重 bug

結論

結論

零知識電路的 bug 往往難以察覺且後果嚴重,編程時必須對素域運算、溢位邊界、模運算陷阱保持極度警惕。

完整解析

詳細

零知識證明正在成為區塊鏈擴展的核心技術。傳統以太坊流程是交易送出→全網執行→存儲更新,而 ZK-Rollup 則改為:交易在證明者側執行、生成執行證明上傳到鏈、節點驗證證明、存儲更新。這樣可大幅降低執行成本,但驗證 ZK 證明本身仍需費用,且帶來了一個隱藏的威脅——bug 追蹤困難。

在普通區塊鏈上,漏洞被利用時整個交易執行軌跡都暴露在鏈上,所有人能看到呼叫棧與執行狀態;但在 ZK 系統中,只有最終證明被驗證,交易本身從不對外公開。若電路有漏洞且攻擊者能生成無效輸入的有效證明,外界只看到「證明有效」,卻完全看不到內部發生了什麼。這意味著資金損失時可能無法追蹤攻擊者如何利用漏洞,極大增加了安全風險。

根本問題來自編程領域的差異。ZK 電路運作在素域(模某個素數 P)而非 256 位整數域,所有運算皆模 P 進行。當算術接近 2^256 邊界時,模 P 的結果與模 2^256 的 EVM 結果迥然不同。以 4 × (2^254 + 1) 為例,在 EVM 中溢位後變成確定值,但在 ZK 中模 P 後可能是完全不同的 250+ 位數字。更危險的是,素域中任何非零數都可被任何非零數整除,這創造了攻擊空間。例如模減法約束 a = Q × B + r 時,若攻擊者可自由選擇 Q 和 r,他可計算 Q = (a - r) / B(在素域中總能整除),這樣任意 r 值都能滿足約束。

電路編程還有另一大難點:用約束關係而非順序指令。這要求電路同時滿足「完整性」(所有有效執行都能生成證明)和「健全性」(有效證明必對應有效執行)。完整性失敗會導致正常交易無法被證明、可能阻止合法提現;健全性失敗會允許虛假交易通過。

高危場景包括:範圍接近 56 位的乘法(需逐個檢查溢位)、除法操作(結果可能巨大且難預測)、分支實現(必須計算所有標誌位避免只執行部分邏輯)、邊界情況(正常代碼無法觸及的分支在電路中成為攻擊者利用點)以及密碼學操作的誤用。幾何平均數 bug 典型地體現了溢位的複雜性:計算兩個 256 位數的幾何平均值時,中間乘積會溢位,解決方案是將數字分割成三個區塊進行「教科書乘法」並驗證多個等式才能確保正確性。

關鍵時刻

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