KeyFrame內部研究專用

DeFi Security 101 2025 - Find Bugs with Stateful Fuzzing, Alex the Entreprenerd, Recon

DeFi Security Summit - DSS·11月19日週三·51 min英文

三句話摘要

從 Foundry 靜態模糊測試的虛假安全感出發,以 Echidna 狀態模糊測試發現 LP 預言機價格操控漏洞,並用優化模式將 2 wei 偏差放大至 63,000 倍的端對端實戰演示。 Foundry 靜態模糊測試無法取代 Echidna 狀態模糊測試:後者自動發現跨操作序列漏洞,搭配優化模式可將 2 wei 的微小偏差放大為 63,000 倍的致命 PoC,是 DeFi 智能合約安全審計中不可跳過的一環。 靜態 vs 狀態模糊測試的本質差異:Foundry fuzz test 只能隨機化單次呼叫的參數,無法測試「swap 之前先 donate」這類跨操作的狀態路徑;Echidna 的狀態模糊測試則讓模糊器自由排列所有合約函式的呼叫順序,找到人類不會手寫的序列。

重點整理

重點
  • 1

    靜態 vs 狀態模糊測試的本質差異:Foundry fuzz test 只能隨機化單次呼叫的參數,無法測試「swap 之前先 donate」這類跨操作的狀態路徑;Echidna 的狀態模糊測試則讓模糊器自由排列所有合約函式的呼叫順序,找到人類不會手寫的序列。

  • 2

    語料庫(corpus)是專業模糊測試的核心資產:Echidna 將每次探索到的「有趣路徑」存入語料庫,可在後續測試中快速重播,因此審計公司(如 Recon)會先花時間建立高品質語料庫,再交給客戶,讓客戶 4 小時內即可重現所有屬性測試,而不需跑幾天。

  • 3

    覆蓋率報告是診斷模糊器的唯一依據:當模糊器無法打破屬性時,第一步是看覆蓋率 HTML 報告(紅線 = 未觸及)。本案例中模糊器卡在 mint 的初始化檢查,解法是在 setup 預先 mint 代幣並 approve 給 pool,讓模糊器從更豐富的狀態出發。

  • 4

    優化模式(optimization mode)將「小偏差」升級為「致命漏洞」:普通模式只告訴你「屬性被打破」,客戶往往以「只差 2 wei」為由略過;切換 optimization mode 後,Echidna 會把最大化偏差當作獎勵函式持續優化,最終找到 63,000 倍的現實重現路徑,讓不作為變得完全站不住腳。

實用技巧與重點

乾貨
  • 工具
  • Echidna(Akidna):狀態模糊測試器,灰箱模式,語料庫自動儲存至 `crytic-corpus/`
  • Foundry:編譯驗證、單元測試、將 Echidna 重現轉為 `forge test` repro
  • Recon 擴充套件 + Chimera Framework:自動從 ABI 生成 handler/target function scaffold,相容 Echidna、Medusa、Almos、Kontrol
  • Cursor:程式碼撰寫環境
  • 關鍵數字
  • 演講者累計漏洞賞金:$500,000
  • 2026 年阻止主網攻擊:$20,000,000
  • 初始偏差:2 wei(客戶通常不予理會)
  • 優化後最大偏差:663,000+ wei → 約 63,000x 價格通膨
  • Echidna 執行:16 執行緒,test limit 依需求設定(demo 用 10,000)
  • 可接受的模糊測試執行時間:4 小時以內為客戶可接受上限,週末可跑 2-3 天
  • 漏洞機制
  • 目標:Curvance 採用 Velodrome pool + 天真 LP 定價公式(fair reserve pricing = pool value / totalSupply × √公式)
  • 攻擊向量:直接 `mint` 代幣到 pool 地址,再呼叫 `sync()`,繞過 swap 手續費機制,強制重新定價
  • 不同於 swap 路徑,此路徑不會被手寫測試覆蓋
  • 流程步驟
  • Foundry 靜態模糊測試 → 通過(虛假安全)
  • Echidna 狀態模糊測試 → 破壞屬性,找到 2 wei 偏差
  • 查看覆蓋率報告,調整 setup(預先 mint + approve)
  • 切換 Echidna optimization mode,函式前綴改 `optimize_`,回傳 `int256`
  • 重跑後取得最大值,縮減語料庫(設低 test limit 讓 shrinking 啟動)
  • 輸出精簡 repro,用 Recon log parser 轉換為 Foundry `forge test` 重現
  • 在 Foundry 中加 `console.log` 確認最大影響,提交報告
  • 形式驗證 vs 模糊測試分工
  • 形式驗證(符號執行):快速確認屬性「理論上可被打破」,但無法保證具體路徑可達
  • 狀態模糊測試:取得 100% 現實可執行的具體重現(concrete repro),直接可用於 PoC

結論

結論

Foundry 靜態模糊測試無法取代 Echidna 狀態模糊測試:後者自動發現跨操作序列漏洞,搭配優化模式可將 2 wei 的微小偏差放大為 63,000 倍的致命 PoC,是 DeFi 智能合約安全審計中不可跳過的一環。

完整解析

詳細

這場演講來自 Recon 共同創辦人、Spearbit 首席安全研究員,他以一個 DeFi LP 預言機為靶標,現場示範如何從「Foundry 模糊測試通過」的錯誤安慰中掙脫,最終找到 63,000 倍的真實可利用漏洞。

問題的根源是 LP 預言機的天真定價公式:用池內資產總值除以 LP totalSupply 計算價格(加上 square root 的變形),這個公式在 Velodrome(Andre Cronje 原始實作)和 Curvance 都有採用。天真之處在於:任何人只要能讓池內資產增加而不增加 totalSupply,就能拉高預言機報價。具體攻擊手段是直接把代幣 `mint` 到 pool 地址,再呼叫低階函式 `sync()` 強制重計餘額,完全繞過 swap 的手續費保護機制。問題是,若只寫 Foundry 靜態 fuzz test,每次測試都只是「隨機化參數但呼叫序列固定」,模糊器永遠不會自行嘗試「先捐款後 sync」這個跨步驟序列,結果所有測試通過、開發者誤以為安全。

演講者接著切換到 Echidna(Akidna)狀態模糊測試,讓模糊器自由排列所有目標函式的呼叫組合。初次執行時模糊器卡住,覆蓋率報告顯示 `mint` 函式的初始化門檻未被突破——問題在於沒有預先給 actor 足夠的代幣與授權。解法是在 `setUp()` 中預先 mint U96 數量的代幣並 approve 給 pool,同時也直接在 pool 中預存初始流動性,讓模糊器從一個已有意義的狀態出發。這個動作立刻讓 Echidna 在幾秒內打破「價格恆等於 2e18」的屬性——但輸出只有 2 wei 的偏差,一個慣常的客戶反應會是「太小、不處理」。

這正是 Echidna 優化模式的切入點。把測試函式前綴改為 `optimize_`、回傳 `int256`(表示「盡量讓這個值變大」),Echidna 的獎勵函式就從「是否打破屬性」改為「最大化偏差數值」。執行數分鐘後,最大值飆升至 663,000+ wei,約 63,000 倍的 LP 價格通膨。接著透過降低 test limit(讓 Echidna 進入 shrinking 模式)縮減操作序列至最小,再用 Recon 的 log parser 把輸出轉換成一個乾淨的 Foundry `forge test` 重現——完整的 PoC 就此成形,任何人都可以在 10 秒內執行並確認。

演講最後,講者總結了他的專業工作流:形式驗證(符號執行)用來快速確認「某個不變量理論上可被打破」,一旦確認,就轉用狀態模糊測試取得 100% 現實可達的具體重現;兩者缺一不可。語料庫建立是最耗時的前期投資,但一旦完成,客戶可在 4 小時內重現所有屬性測試,這是讓客戶願意持續使用該技術的關鍵門檻。

關鍵時刻

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