State of Fuzzing: Closing the Circle From Machine to Human and Back
三句話摘要
智能合約模糊測試的三代演進:從機器驅動、人工引導,到 AI 輔助的 Erase Fuzzing。 AI 能生成樣板、節省機械工作,但找到真正漏洞的關鍵仍是審計員的攻擊者思維與對協議邏輯的深度理解。 覆蓋率不等於找到 Bug:覆蓋率百分比只是指標,真正的漏洞往往藏在需要 10 個連續交易觸發的事件鏈中,純機器驅動的演算法難以引導至此。
重點整理
重點- 1
覆蓋率不等於找到 Bug:覆蓋率百分比只是指標,真正的漏洞往往藏在需要 10 個連續交易觸發的事件鏈中,純機器驅動的演算法難以引導至此。
- 2
人工引導模糊測試的核心是「流程」:審計員在 Wake 框架中定義「Flow」(相當於集成測試的執行路徑),並用 Python 實作協議的狀態模型,模糊測試器負責對所有輸入組合進行隨機化驗證,不變式(Invariant)在每個 Flow 後自動比對 Python 狀態與合約狀態是否一致。
- 3
撰寫模型本身就能發現 Bug:強制審計員用 Python 重現協議邏輯,這個思考過程本身會打開思維死角,使審計員找到模糊測試器根本不會觸達的邏輯漏洞。
- 4
AI 輔助只解決了樣板問題,核心仍需人介入:LLM 能生成 Flow 的框架代碼與事件處理循環,但無法從糟糕的 Web3 文件中還原正確的協議數學模型,也無法像攻擊者一樣思考新型攻擊向量。
實用技巧與重點
乾貨- 工具/框架:Medusa、Wake framework、Slitter(靜態分析)、Cursor(AI 代碼生成)
- 技術術語:Coverage-guided feedback loop、Heuristic algorithms、Invariant、Flow(人工引導流程)、Erase Fuzzing
- 數據:過去一年發現的高危/關鍵漏洞中,近 50% 為邏輯錯誤;其餘為數據驗證類(模糊測試器較擅長發現)
- AI 輔助效果:LLM 可生成約 50% 的樣板代碼(循環、事件處理),剩餘部分(Python 模型更新、安全斷言)仍需人工撰寫
- 三大 AI 全自動化瓶頸:① LLM 無法從文件重現協議數學模型;② 測試失敗時的分診(判斷是測試寫錯還是真有 Bug)仍需人工;③ 新型攻擊向量發現仍依賴人類創造力
- 方法論原則:Python 模型實作時不得參考合約原始碼,避免把同樣的 Bug 複製進模型導致相互抵消
結論
結論“AI 能生成樣板、節省機械工作,但找到真正漏洞的關鍵仍是審計員的攻擊者思維與對協議邏輯的深度理解。”
完整解析
詳細智能合約的模糊測試面臨一個根本挑戰:協議整合數量龐大,導致狀態空間極為廣闊,純暴力破解不可行。講者指出,覆蓋率百分比是一個誤導性指標——真正有意義的是能否找到 Bug,而非覆蓋了多少程式碼路徑。
第一代方案是機器驅動的模糊測試(黑盒/灰盒),以 Medusa 為代表。其核心是覆蓋率引導的反饋迴圈:投入隨機交易、觀察狀態空間中的新路徑、偏向選擇尚未探索的分支並持續迭代。輔以啟發式演算法(如整合 Slitter 靜態分析提供具體地址或邊界值),幫助模糊測試器探索可能含有 Bug 的狀態。這種方法的優勢是「設定好就放著跑」,但缺點同樣明顯:若漏洞藏在需要 10 個依序發生的事件鏈中,純機器幾乎找不到。
為此,講者的團隊開發了人工引導模糊測試,在 Wake 框架中引入「Flow」概念。Flow 本質上是一個集成測試:審計員定義協議必須經過的複雜執行路徑(例如:存款 → 等待 → 提款 → 驗證),模糊測試器負責對這條路徑的所有輸入組合進行隨機化。同時,審計員用 Python 撰寫協議的狀態模型,每個 Flow 執行後,不變式(Invariant)自動比對 Python 模型輸出與合約鏈上輸出是否一致,差異即為潛在漏洞。這個方法有一個意外收穫:強迫審計員思考並實作協議邏輯的過程本身,往往讓他們發現模糊測試器完全碰不到的邏輯漏洞。實際數據顯示,過去一年發現的高危與關鍵漏洞中,近半數屬於邏輯錯誤,印證了這種方法的有效性。
然而,人工引導模糊測試的代價是高昂的時間成本——審計員等於要用 Python 部分重寫整個協議,且合約每次更新都需同步修改模型。這促使團隊探索第三條路:AI 輔助的 Erase Fuzzing。做法是將 Wake 文件與示例 Playbook 餵給 Cursor,讓 LLM 學習框架後自動生成 Flow 的樣板代碼(循環結構、事件處理、隨機參數初始化等),審計員只需補上核心的安全斷言與 Python 模型更新邏輯。目前 LLM 能處理約一半的機械性代碼,顯著提升了開發速度,且當 LLM 生成的邏輯有誤時,測試通常會失敗並產生誤報,反而提供了自然的品質把關機制。
儘管如此,全自動 AI 模糊測試目前仍有三道牆:Web3 文件品質普遍低落,LLM 無法從中正確還原協議數學模型;測試失敗時的分診工作(判斷是測試本身寫錯還是真正發現漏洞)仍需人工判斷;最關鍵的是,新型攻擊向量的發現依賴人類的創造力與攻擊者思維,而 LLM 只能依賴訓練資料,面對日新月異的技術向量力有未逮。解決這三個問題,才能實現真正全自動的 AI 模糊測試。
關鍵時刻
Pipeline v2帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。
事實查核
Pipeline v2說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

