T

fuzzing-dictionary

作者 trailofbits

fuzzing-dictionary 技能可協助你建立 fuzzing 字典,包含領域專屬 token、魔術值與協定字串,適用於 parser、協定與檔案格式。當盲目突變卡住、需要透過 libFuzzer、AFL++ 或 cargo-fuzz 擴大覆蓋率時,特別有幫助。

Stars5k
收藏0
評論0
加入時間2026年5月7日
分類程式碼生成
安裝指令
npx skills add trailofbits/skills --skill fuzzing-dictionary
編輯評分

這個技能評分為 78/100,屬於相當不錯的目錄候選:使用者能快速判斷何時該用它,而內容也提供足夠的工作流程細節,比一般的 fuzzing 提示更能減少猜測。若你想要一份可重複使用、以字典驅動 fuzzing 為核心的指南,這個技能很適合安裝;不過它偏重方法與技巧,而不是工具操作型教學。

78/100
亮點
  • 針對 parser、協定與檔案格式 fuzzing 提供明確的適用時機指引,讓代理能更容易判斷何時套用此技能。
  • 操作內容相當充實,包含引號條目、hex escapes、token injection,以及跨 fuzz 工具格式(libFuzzer、AFL++、cargo-fuzz)等具體概念。
  • 正文具備結構化標題與工作流程 संकेत,能支援漸進式揭露,也讓代理更快理解內容。
注意事項
  • 沒有提供安裝命令、腳本或配套檔案,因此不應期待自動化或可直接執行的工具。
  • 這個技能偏重技巧方法,而非完整的端到端 fuzzing 工作流程,所以代理在建立特定目標的字典時,仍可能需要外部脈絡。
總覽

fuzzing-dictionary 技能概覽

fuzzing-dictionary 技能可幫助你建立並使用 fuzzing dictionary:也就是經過挑選的 token、magic value 與 protocol 字串,用來引導 fuzzer 進入更深層的 parser、protocol 或 file-format 程式碼。如果你正在用 libFuzzer、AFL++ 或 cargo-fuzz 做 fuzzing,而單純的隨機變異已經卡住,fuzzing-dictionary 技能能提供一條實用路徑,在不重寫 fuzz target 的情況下提升 coverage。

這個技能特別適合那些 target 已經能跑、但還需要更深入碰觸驗證邏輯的人。當你的輸入包含保留關鍵字、結構化 header、命令動詞,或是隨機 fuzzing 很難命中的格式特定常數時,它尤其有用。

fuzzing-dictionary 解決了什麼問題

它的核心工作,是把「我的 fuzzer 卡住了」轉成更有引導性的輸入策略。一份好的 fuzzing dictionary 能幫你繞過前置拒絕、解鎖具狀態性的 parsing 分支,並挖出那些只有在出現幾個看起來合理的 token 後才會浮現的 edge case。

fuzzing-dictionary 最適合用在哪裡

當你在 fuzzing parser、protocol handler,或帶有可辨識 token 的 file reader 時,fuzzing-dictionary 會很合適。它特別適用於「輸入結構比原始位元雜訊更重要」的情境;相對地,對純算術、影像轉換,或沒有 token 詞彙可用的高邏輯密度程式碼,效果就比較弱。

fuzzing-dictionary 的差異在哪裡

fuzzing-dictionary 技能不只是「多加一些字串」而已。它重點在於挑出符合目標驗證與解析規則的 token,並以 fuzzer 真正吃得進去的格式整理出來。當你需要的不是「看起來合理」而是「能派上用場」的 dictionary 時,它會比泛用型提示更有價值。

如何使用 fuzzing-dictionary 技能

安裝並找到來源

先走目錄安裝流程:npx skills add trailofbits/skills --skill fuzzing-dictionary。安裝完成後,先從 SKILL.md 開始,再閱讀同一個 skill 資料夾中的任何連結材料。這個 repo 的 skill 本身是自包含的,所以主要來源就是 skill 檔案本身。

把你的 target 轉成可用的提示

fuzzing-dictionary usage 最適合在你提供 target 的領域、輸入格式與失敗模式時使用。例如,不要只問「幫我做一份我 app 的 fuzzing dictionary」,而是要提供:

  • parser 或 protocol 的名稱
  • 範例輸入或 grammar 提示
  • 已知的關鍵字、header、magic bytes 或 delimiter
  • 你使用的 fuzzer,以及它對 dictionary 格式的要求
  • 目前缺少哪些 coverage,或是哪裡在驗證時失敗

好的提示會像這樣:Create a fuzzing-dictionary for a DNS-like protocol parser. Include common record types, delimiters, and control tokens, and format it for AFL++.

依正確順序閱讀這個 skill

在這個 repository 裡,最有用的閱讀順序是:

  1. SKILL.md:看工作流程與適用性規則
  2. 各個 dictionary entry 與 token 類別的 inline 範例
  3. 「When to Apply」的指引:避免把這個 skill 用在不會受益的 target 上

實際使用上的小技巧

entries 要短、看起來像有效值,並且要貼近領域語意。若 target 會在早期就拒絕輸入,可把明顯 token 與少量邊界值或錯誤變體混在一起。如果第一版 dictionary 太過泛用,就要把它收斂到 target 在失敗前實際會走到的精確 parse checkpoint。

fuzzing-dictionary 技能 FAQ

fuzzing-dictionary 只有 fuzzing 老手才能用嗎?

不是。只要你已經知道自己在 fuzz 什麼,而且能提供範例輸入,fuzzing-dictionary 技能對初學者也可用。你不需要很懂 fuzzer 內部機制,但你需要足夠的背景資訊,來描述 target 的 token 詞彙。

什麼情況下不該用這個技能?

如果 target 沒有有意義的輸入 token、如果不靠引導 coverage 已經足夠好,或是瓶頸在 harness 設計而不是輸入品質,那就先不要用 fuzzing-dictionary。dictionary 不會修好壞掉的 fuzz target、只會 crash 的 bug,或是因為缺少 corpus seed 而造成的問題。

這和一般提示有什麼不同?

一般提示常常只會產出一份泛用 token 清單。fuzzing-dictionary 技能更有用,是因為它以可安裝的工作流程、fuzzer 相容的格式,以及 dictionary 真正能提升 coverage 的條件為中心。這也讓它更適合做 fuzzing-dictionary install 決策,以及重複使用。

這適用於所有 fuzzers 嗎?

它最適合主流、支援 dictionary 的生態系,特別是 libFuzzer、AFL++ 和 cargo-fuzz。若你的工具鏈使用的是不同的輸入機制,你仍然可以借用 token 選擇邏輯,但在使用前應先確認所需的 dictionary 語法。

如何改進 fuzzing-dictionary 技能

提供更好的 target 證據

最好的 fuzzing-dictionary guide 輸入,會包含來自 target 的真實 token:protocol 動詞、enum 名稱、欄位標籤、magic number,或保留關鍵字。即使只是少量 sample corpus,或幾個失敗輸入,也常常比模糊的專案描述更能改善 token 選擇。

依用途請求 token

在使用 fuzzing-dictionary for Code Generation 時,請把 token 按角色拆開:必要關鍵字、可選修飾詞、邊界值,以及錯誤變體。這樣輸出才能同時涵蓋有效 parsing 路徑與接近有效的 edge case,而不是只產生一長串平面的字串清單。

留意常見失敗模式

最常見的錯誤包括:dictionary 範圍過大、條目不符合 target grammar、以及 token 太長,對變異沒有幫助。如果第一次結果看起來太泛,請把範圍縮小到單一 parser、單一 protocol command set,或單一 file format 區段,再重新產生。

第一次跑完之後要迭代

先用第一輪 fuzzing 看哪些 token 真的有提升 coverage 或進入新狀態。接著刪掉沒用的條目、從 traces 或 logs 補上漏掉的關鍵字,然後重新產生一份更小、更精準的 fuzzing-dictionary,而不是無止盡地把它越堆越大。

評分與評論

尚無評分
分享你的評論
登入後即可為這項技能評分並留言。
G
0/10000
最新評論
儲存中...