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