MASFuzzer 論文閱讀分析:真正拖慢 library fuzzing 的,通常不是 mutation 不夠,而是 driver 根本不懂 API 要怎麼串

本文由 AI 產生、整理與撰寫。

論文基本資訊

  • 論文標題:MASFuzzer: Fuzz Driver Generation and Adaptive Scheduling via Multidimensional API Sequences
  • 作者:Xingyu Liu、Zengqin Huang、Xiang Gao、Hailong Sun
  • 年份:2026
  • 來源:arXiv:2604.17977
  • 論文連結:https://arxiv.org/abs/2604.17977
  • DOI:10.48550/arXiv.2604.17977
  • 主題:Fuzzing、LLM-Assisted Security Testing、API Sequence Mining、Coverage-Guided Scheduling、Application Security、Vulnerability Discovery

這篇 MASFuzzer 有意思的地方,不只是又讓 LLM 幫忙寫 fuzz driver,而是把很多這類工作的老問題直接攤開來講:就算模型真的能把 driver 生出來,若 driver 本身不夠懂 library API 的呼叫脈絡,後面的 fuzzing 還是很容易只在表層打轉。

很多人對 LLM-assisted fuzzing 的想像,停在「把函式簽名餵給模型,叫它吐一個 harness」。但實務上,真正困難的通常不是把程式碼寫出來,而是決定:哪些 API 應該怎麼串、哪些前置狀態要先建立、哪些 sequence 比較可能摸到深層邏輯與錯誤狀態。

MASFuzzer 的切入點正是這個問題。它在 LLM 前面先補上一層 multidimensional API sequence construction,也就是先從 codebase 裡找 usage example、再做 mutation-propagation-grounded 與 semantic-aware 的 API sequence mining,最後才讓模型根據這些比較像樣的結構去生成初始 fuzz driver。

很多 fuzz driver 失敗,不是因為 LLM 不會寫 code,而是因為它根本不知道這個 library 的 API 應該先暖機、再串接、最後在哪裡施壓。

它想補哪個洞?

傳統 library fuzzing 很依賴人工撰寫 driver,這件事有三個明顯痛點:

  • 人工成本高:研究者或工程師得先理解 API,再手寫可執行的測試入口。
  • 覆蓋深度有限:driver 若只碰到淺層 API,後面再怎麼 fuzz 也很難撞進真正危險的路徑。
  • 維護性差:library 一改版,原本 driver 可能就過時,或根本沒涵蓋新增功能。

近年 LLM 被拿來自動生成 fuzz driver,確實讓「寫出一個能跑的 driver」變容易,但也很常出現另一個問題:生成出來的 driver 看起來合理,實際上卻不夠懂 API usage pattern,所以很難引導 fuzzing 抵達深層 branch。

MASFuzzer 的觀點很實際:如果你只把 LLM 當成 code generator,等於把最關鍵的探索結構交給模型猜;那不如先用程式分析與 usage mining 幫它整理出比較可信的 API sequence 候選,再讓模型往下寫。

方法核心:先讓 driver 更懂 API,再讓 scheduler 更懂哪個 driver 值得燒時間

MASFuzzer 不是單點優化,而是把整條流程拆成兩個互相配合的層次:

  • Multidimensional API sequence construction:從 codebase 裡抽 usage example,結合 mutation propagation 與 semantic-aware mining,整理出比較有脈絡的 API 呼叫序列。
  • LLM-based initial driver generation:讓模型基於這些序列生成更合理的初始 fuzz driver,而不是從零猜。
  • Coverage-guided adaptive scheduling:不是每個 driver 都平均分配時間,而是根據覆蓋效果,優先讓更有希望的 driver 持續跑。
  • Driver mutation strategy:不把 driver 當靜態產物,而是把它也納入可演化對象,逐步嘗試打開更多未測區域。

我覺得這篇最值得記的是它後半段。很多 LLM-for-security 論文只在前面把模型接進去,後面整條 pipeline 還是老樣子;但 MASFuzzer 願意承認一件事:好的初始 driver 很重要,可真正把 coverage 推深的,常常是後續的資源分配與 driver 演化策略。

換句話說,它不是把 LLM 當一次性的捷徑,而是放進一個會持續篩選、加壓、淘汰與進化的 fuzzing loop 裡。

這篇最關鍵的洞見:真正稀缺的不是更多 driver,而是更有結構感的 driver 搜尋空間

我覺得 MASFuzzer 最強的 framing,不是「LLM 幫 fuzzing 自動化」,而是:library fuzzing 真正缺的不是更多 harness 數量,而是更像樣的 API interaction hypothesis。

因為對很多 library 來說,漏洞不會躲在單一 API 的表層呼叫,而是藏在:

  • 某些資源初始化與釋放的特定順序
  • 狀態依賴型的多步驟互動
  • 不同 API 之間資料流轉與約束被破壞的邊界

如果 driver 一開始沒有把這些 sequence 假設帶進去,fuzzer 再努力也可能只是在同一圈外圍一直撞。MASFuzzer 的 multidimensional API sequence mining,本質上就是想把這個「猜 sequence」的問題從黑箱亂猜,拉回到比較有根據的結構搜尋。

這件事和近年很多 agentic security paper 的共通點很像:效能大幅提升的關鍵,常常不是因為模型瞬間變聰明,而是因為有人先把問題空間整理得更像工程系統。

結果怎麼看?

根據摘要,作者在 12 個廣泛使用的開源 library 上評估 MASFuzzer,結論有兩個數字很值得記:

  • 程式碼覆蓋率比現有最佳方法高 8.54%
  • 找出 16 個先前未知漏洞,其中 14 個獲開發者確認、9 個已分配 CVE

這組結果如果站得住腳,含義其實不小。因為 fuzzing 研究很常出現「coverage 有提升,但找到的新洞有限」或「找到 bug 但很難證明泛化」的情況;而這篇同時拿 coverage 與實際漏洞數來支撐,至少說明它不是只在 benchmark 上做出漂亮指標。

尤其是 9 個 CVE 這件事,會讓它更接近實務價值,而不是只停在實驗室裡的生成式 coding demo。

對安全工程團隊的實際意義

如果你是做 AppSec、漏洞研究或程式分析的人,這篇 paper 值得看的不是「以後 fuzz driver 都交給 LLM 寫」這種過度簡化的結論,而是另一個更務實的方向:把 library usage knowledge、程式分析訊號與 LLM 生成能力綁在一起,可能比單獨強化任何一邊都更有效。

它給實務團隊的啟發至少有三個:

  • 不要把 API 文件當成唯一上下文:真實 usage example 與程式內部資料流,往往比文件更能告訴你 sequence 應該怎麼組。
  • 不要把 driver 當一次性成果:driver 本身也可以是持續演化的探索物件。
  • 不要平均分配 fuzzing 資源:讓 scheduler 依 coverage 與潛力重新排序,通常比大家一起慢慢跑更有效。

說白一點,這篇不是在展示「AI 取代 fuzzing 專家」,而是在展示:如果把模型放在對的位置,它可以讓 fuzzing 團隊比較快建立深層 API interaction 的假設,再用工程化迴圈去驗證與擴展。

它的限制也很明顯

當然,這篇也不是沒有保留點:

  • 依賴 codebase usage example:若目標 library 缺乏足夠範例,或範例本身偏淺,sequence mining 的上限就會受限。
  • 對封閉原始碼與私有 API 的適用性未明:這套方法在 open-source library 很合理,但在黑盒或文檔稀缺環境是否還同樣有效,要再看。
  • LLM 生成品質仍有波動:即使 sequence 候選變好了,最後生成的 driver 仍可能出現脆弱、冗餘或不穩定問題。
  • 評估範圍仍偏 library fuzzing:能否擴到大型系統、服務端元件或跨模組互動場景,還不能直接外推。

所以更精準地說,MASFuzzer 比較像是在 library fuzzing 這個特定場景,提出一條很有說服力的強化路徑,而不是已經把自動化漏洞發掘全面解決。

我會怎麼記這篇?

如果要用一句話記住 MASFuzzer,我會寫成:

真正能把 LLM 帶進 fuzzing 產線的,不是讓它憑空寫 driver,而是先幫它看懂 library API 的互動結構,再把生成結果丟進會選拔、會演化、會重新分配資源的迴圈裡。

它最值得看的點,不是 LLM 這三個字本身,而是它把 API usage mining、driver generation、adaptive scheduling 接成了一條更完整的漏洞探索流程。

總結

MASFuzzer: Fuzz Driver Generation and Adaptive Scheduling via Multidimensional API Sequences 這篇論文的價值,在於它沒有把問題簡化成「如何自動寫出 fuzz driver」,而是更進一步處理了 driver 應該如何建立、哪個 driver 值得持續投入、以及 driver 本身如何演化 這三個真正影響漏洞挖掘效果的關鍵。

對 AI × Security 這條線來說,這篇很像一個成熟訊號:下一階段真正有機會產生實際影響的,不會只是讓模型多寫一些安全工具,而是把模型嵌進有結構、懂回饋、會調度資源的安全工程閉環。