Una pipeline de fuzzing impulsada por LLM y potenciada por el GitHub Security Lab Taskflow Agent
Un pipeline de fuzzing estilo OSS-Fuzz impulsado por LLM para proyectos nativos en C/C++. AFL++ para la ejecución, clang+lcov para la cobertura, un agente LLM para la escritura de harnesses, decisiones basadas en retroalimentación de cobertura, triaje y reportes.
Este repositorio contiene el taskflow de fuzzing para el
GitHub Security Lab Taskflow Agent.
Depende del repositorio complementario
seclab-taskflows
para algunos bloques de construcción compartidos
(taskflow fetch_source_code, toolboxes local_file_viewer / gh_file_viewer,
y el model_config predeterminado) — esos se instalan
automáticamente como una dependencia de Python.
¡Las contribuciones son bienvenidas! Consulta CONTRIBUTING.md para obtener las pautas.
aptgh)pip install git+https://github.com/GitHubSecurityLab/seclab-taskflows-fuzzing
Esto incorpora seclab-taskflow-agent y seclab-taskflows (padre)
de forma transitiva, por lo que cada referencia con puntos de la forma
seclab_taskflows.taskflows.audit.*,
seclab_taskflows.toolboxes.local_file_viewer,
seclab_taskflows.toolboxes.gh_file_viewer, y
seclab_taskflows.configs.model_config se resuelve desde la distribución
padre en tiempo de ejecución.
Este taskflow es un pipeline de fuzzing totalmente autónomo. Dado un repositorio de GitHub de un proyecto nativo en C/C++, hará lo siguiente:
.afl instrumentado con AFL++, un binario .cmplog instrumentado con CMPLOG
de AFL++ y un binario .cov instrumentado con cobertura de clang,El pipeline es estilo OSS-Fuzz en espíritu: usa muchas de las mismas técnicas (mutadores y diccionarios por formato, empalme de tokens consciente de la estructura, mejoras de harness guiadas por cobertura, informes legibles por máquina, crashes deduplicados con hash de pila) pero es mucho más pequeño y autocontenido.
# Inside the codespace (or a host with python + git available):
./scripts/fuzzing/run_fuzzing.sh tukaani-project/xz
Esa es toda la interfaz. El script es autónomo; instalará AFL++
en la primera ejecución y luego dirigirá el resto del flujo de tareas. Los archivos de salida se escriben
en ~/.local/share/seclab-taskflow-agent/seclab-taskflows/.
El panel de control se inicia automáticamente en segundo plano; en un Codespace, el puerto 8765 se
redirige automáticamente — ábrelo en cualquier navegador para ver el progreso en vivo.
Para una prueba rápida, usa un objetivo pequeño:
./scripts/fuzzing/run_fuzzing.sh DaveGamble/cJSON
Tres capas, de arriba a abajo:
┌────────────────────────────────────────────────────────────────────┐
│ 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 │
└────────────────────────────────────────────────────────────────────┘
Reglas de diseño clave: