Fuzzing Taskflow 開源:讓 AI 代理依覆蓋率補測 C/C++ 程式碼

BlueSky

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

Related Articles

Stay Connected

0FansLike
0FollowersFollow
22,800SubscribersSubscribe
spot_img

Latest Articles