
AI 摘要
- Fuzzing Taskflow 將 AI 代理與 AFL++ 整合為模糊測試流程。
- 代理會依覆蓋率結果調整測試,以觸及尚未測到的程式分支。
- GitHub 建議在隔離環境執行,並由人工審查漏洞判斷與修補內容。
Fuzzing Taskflow 是 GitHub Security Lab 開源的模糊測試自動化管線,結合大型語言模型代理與 AFL++,面向需要測試 C/C++ 專案的開發者。指定 GitHub 儲存庫後,代理會尋找適合測試的函式、分析建置方式、產生測試程式並執行模糊測試,再依覆蓋率結果補測未觸及的程式碼;流程也涵蓋崩潰分析與漏洞報告產生。
代理依覆蓋率調整測試
Fuzzing Taskflow 建立在 GitHub Security Lab Taskflow Agent 框架上。大型語言模型負責選擇測試目標、決定測試程式內容,以及處理尚未覆蓋的程式碼;MCP 工具則負責編譯、執行 AFL++、收集覆蓋率和保存崩潰資訊,流程狀態儲存在 SQLite 資料庫。
每個模糊測試程式會編譯成兩個版本:一個交由 AFL++ 執行測試,另一個用來計算程式碼行與分支覆蓋率。每輪測試結束後,代理會檢視未覆蓋的分支,並可增加測試輸入、修改測試程式呼叫的介面,或將條件判斷中的常數加入 AFL++ 字典。
測試時間與停止條件
每輪測試時間依序增加;預設會在連續兩輪的程式碼行覆蓋率增幅都低於 1 個百分點時停止。
| 測試輪次 | 測試時間 |
|---|---|
| 第 1 輪 | 30 秒 |
| 第 2 輪 | 60 秒 |
| 第 3 輪 | 120 秒 |
| 第 4 輪 | 240 秒 |
| 第 5 輪 | 480 秒 |
| 第 6 輪 | 960 秒 |
內建字典並支援崩潰分析
針對 JSON、XML、正規表示式、PNG 與 TLV 等格式,Fuzzing Taskflow 提供現成字典與自訂輸入變異器。遇到其他格式時,管線可掃描 C/C++ 原始碼及標頭檔,擷取字串與 32 位元常數建立專案專屬字典;覆蓋率分析也會檢查未覆蓋程式碼附近的條件判斷,將比對用常數加入字典,供 AFL++ 嘗試觸及其他分支。
測試結束後,管線會縮小造成程式崩潰的輸入,並使用 AddressSanitizer 記錄錯誤位置及函式呼叫路徑,再去除重複問題。代理會分析測試程式與出錯函式,評估公開程式介面能否觸發問題,以及問題是否具備漏洞利用條件,最後產生 Markdown 報告,內容包括原因、程式碼位置、修補建議與迴歸測試草稿。
執行前須留意主機安全
Fuzzing Taskflow 會直接在主機執行 AFL++、Clang 及代理選擇的建置命令,並沒有容器隔離。GitHub 提醒,提示注入可能使代理執行使用者帳號權限允許的操作,因此建議在 GitHub Codespaces 或拋棄式虛擬機器中執行,並避免使用高權限帳號。漏洞判斷與修補內容仍須由人工審查。
Reference Link : ithome.com.tw




