Un pipeline de fuzzing piloté par LLM propulsé par le GitHub Security Lab Taskflow Agent
Un pipeline de fuzzing de style OSS-Fuzz piloté par LLM pour les projets natifs C/C++. AFL++ pour l'exécution, clang+lcov pour la couverture, un agent LLM pour l'écriture de harness, les décisions basées sur le retour de couverture, le triage et le reporting.
Ce dépôt contient le taskflow de fuzzing pour le
GitHub Security Lab Taskflow Agent.
Il dépend du dépôt compagnon
seclab-taskflows
pour quelques blocs de construction partagés
(taskflow fetch_source_code, toolboxes local_file_viewer / gh_file_viewer,
et le model_config par défaut) — ceux-ci sont installés
automatiquement en tant que dépendance Python.
Les contributions sont les bienvenues ! Veuillez consulter CONTRIBUTING.md pour les directives.
aptgh)pip install git+https://github.com/GitHubSecurityLab/seclab-taskflows-fuzzing
Cela intègre seclab-taskflow-agent et seclab-taskflows (parent)
de manière transitive, de sorte que chaque référence pointée de la forme
seclab_taskflows.taskflows.audit.*,
seclab_taskflows.toolboxes.local_file_viewer,
seclab_taskflows.toolboxes.gh_file_viewer, et
seclab_taskflows.configs.model_config soit résolue depuis la distribution
parente à l'exécution.
Ce taskflow est un pipeline de fuzzing entièrement autonome. Étant donné un dépôt GitHub d'un projet natif C/C++, il va :
.afl instrumenté par AFL++, un binaire .cmplog instrumenté par
AFL++ CMPLOG et un binaire .cov instrumenté par la couverture clang,Le pipeline est de style OSS-Fuzz dans l'esprit : il utilise un grand nombre des mêmes techniques (mutateurs et dictionnaires par format, épissage de tokens sensible à la structure, améliorations de harness guidées par la couverture, rapports lisibles par machine, crashes dédupliqués par hachage de pile) mais il est beaucoup plus petit et autonome.
# Inside the codespace (or a host with python + git available):
./scripts/fuzzing/run_fuzzing.sh tukaani-project/xz
C'est toute l'interface. Le script est autonome ; il installera AFL++
au premier lancement, puis pilotera le reste du flux de tâches. Les fichiers de sortie sont écrits
dans ~/.local/share/seclab-taskflow-agent/seclab-taskflows/.
Le tableau de bord démarre automatiquement en arrière-plan ; dans un Codespace, le port 8765 est
automatiquement redirigé — ouvrez-le dans n'importe quel navigateur pour suivre la progression en direct.
Pour un test rapide, utilisez une petite cible :
./scripts/fuzzing/run_fuzzing.sh DaveGamble/cJSON
Trois couches, de haut en bas :
┌────────────────────────────────────────────────────────────────────┐
│ 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 │
└────────────────────────────────────────────────────────────────────┘
Règles de conception clés :