Una pipeline di fuzzing basata su LLM alimentata dal GitHub Security Lab Taskflow Agent
Una pipeline di fuzzing in stile OSS-Fuzz guidata da LLM per progetti nativi C/C++. AFL++ per l'esecuzione, clang+lcov per la copertura, un agente LLM per la scrittura degli harness, le decisioni basate sul feedback di copertura, il triage e il reporting.
Questo repository contiene il taskflow di fuzzing per il
GitHub Security Lab Taskflow Agent.
Dipende dal repository complementare
seclab-taskflows
per alcuni blocchi di costruzione condivisi
(taskflow fetch_source_code, toolbox local_file_viewer / gh_file_viewer,
e il model_config predefinito) — questi vengono installati
automaticamente come dipendenza Python.
I contributi sono benvenuti! Consulta CONTRIBUTING.md per le linee guida.
aptgh)pip install git+https://github.com/GitHubSecurityLab/seclab-taskflows-fuzzing
Questo include transitivamente seclab-taskflow-agent e seclab-taskflows (parent),
quindi ogni riferimento puntato nella forma
seclab_taskflows.taskflows.audit.*,
seclab_taskflows.toolboxes.local_file_viewer,
seclab_taskflows.toolboxes.gh_file_viewer, e
seclab_taskflows.configs.model_config viene risolto dalla distribuzione
parent a runtime.
Questo taskflow è una pipeline di fuzzing completamente autonoma. Dato un repository GitHub di un progetto nativo C/C++, esso:
.afl instrumentato con AFL++, un binario .cmplog
instrumentato con CMPLOG di AFL++ e un binario .cov instrumentato con
copertura di clang,La pipeline è in stile OSS-Fuzz: utilizza molte delle stesse tecniche (mutatori e dizionari per formato, splicing di token structure-aware, miglioramenti dell'harness guidati dalla copertura, report leggibili da macchina, crash deduplicati con hash dello stack) ma è molto più piccola e autosufficiente.
# Inside the codespace (or a host with python + git available):
./scripts/fuzzing/run_fuzzing.sh tukaani-project/xz
È tutta l'interfaccia. Lo script è autonomo; installerà AFL++
alla prima esecuzione, poi guiderà il resto del taskflow. I file di output vengono scritti
in ~/.local/share/seclab-taskflow-agent/seclab-taskflows/.
La dashboard si avvia automaticamente in background; in un Codespace, la porta 8765 viene
inoltrata automaticamente — aprila in qualsiasi browser per seguire i progressi in tempo reale.
Per un rapido smoke-test, usa un target di piccole dimensioni:
./scripts/fuzzing/run_fuzzing.sh DaveGamble/cJSON
Tre livelli, dall'alto verso il basso:
┌────────────────────────────────────────────────────────────────────┐
│ scripts/fuzzing/run_fuzzing.sh │
│ shell driver; chains the taskflow stages with `set +e` │
└────────────────────┬───────────────────────────────────────────────┘
│
▼
┌────────────────────────────────────────────────────────────────────┐
│ src/seclab_taskflows/taskflows/fuzzing/*.yaml │
│ LLM agent prompts; one YAML per pipeline stage │
└────────────────────┬───────────────────────────────────────────────┘
│ (calls MCP tools)
▼
┌────────────────────────────────────────────────────────────────────┐
│ src/seclab_taskflows/mcp_servers/ │
│ ├ fuzz_context.py persistence (SQLite via SQLAlchemy) │
│ └ fuzz_runner.py subprocess wrappers (AFL, clang, lcov, ...) │
│ │
│ scripts/fuzzing/dashboard.py │
│ read-only HTML view of fuzz_context.db │
└────────────────────────────────────────────────────────────────────┘
Regole di progettazione chiave: