Eine LLM-gesteuerte Fuzzing-Pipeline, angetrieben durch den GitHub Security Lab Taskflow Agent
Eine LLM-gesteuerte Fuzzing-Pipeline im OSS-Fuzz-Stil für native C/C++-Projekte. AFL++ für die Ausführung, clang+lcov für die Coverage, ein LLM-Agent für das Schreiben von Harnesses, Coverage-Feedback-Entscheidungen, Triage und Reporting.
Dieses Repository enthält den Fuzzing-Taskflow für den
GitHub Security Lab Taskflow Agent.
Es hängt vom
seclab-taskflows
Begleit-Repository für einige gemeinsame Bausteine ab
(fetch_source_code-Taskflow, local_file_viewer / gh_file_viewer
Toolboxes und die Standard-model_config) — diese werden
automatisch als Python-Abhängigkeit installiert.
Beiträge sind willkommen! Bitte siehe CONTRIBUTING.md für Richtlinien.
aptgh)pip install git+https://github.com/GitHubSecurityLab/seclab-taskflows-fuzzing
Dies zieht seclab-taskflow-agent und seclab-taskflows (Parent)
transitiv mit ein, sodass jede punktierte Referenz der Form
seclab_taskflows.taskflows.audit.*,
seclab_taskflows.toolboxes.local_file_viewer,
seclab_taskflows.toolboxes.gh_file_viewer und
seclab_taskflows.configs.model_config zur Laufzeit aus der Parent-
Distribution aufgelöst wird.
Dieser Taskflow ist eine vollständig autonome Fuzzing-Pipeline. Ausgehend von einem GitHub-Repo eines nativen C/C++-Projekts wird er:
.afl-Binary, ein AFL++-CMPLOG-instrumentiertes .cmplog-
Binary und ein clang-coverage-instrumentiertes .cov-Binary bauen,Die Pipeline ist im Geiste OSS-Fuzz-artig: Sie verwendet viele derselben Techniken (Mutator und Wörterbücher pro Format, strukturbewusstes Token- Splicing, coverage-getriebene Harness-Verbesserungen, maschinenlesbare Berichte, deduplizierte stack-gehashte Abstürze), ist aber viel kleiner und eigenständig.
# Inside the codespace (or a host with python + git available):
./scripts/fuzzing/run_fuzzing.sh tukaani-project/xz
Das ist die gesamte Oberfläche. Das Skript ist autonom; es installiert AFL++
beim ersten Lauf und steuert dann den Rest des Taskflows. Ausgabedateien werden
nach ~/.local/share/seclab-taskflow-agent/seclab-taskflows/ geschrieben.
Das Dashboard startet automatisch im Hintergrund; in einem Codespace wird Port 8765
automatisch weitergeleitet — öffne ihn in einem beliebigen Browser, um den Fortschritt live zu verfolgen.
Für einen schnellen Smoke-Test verwende ein kleines Ziel:
./scripts/fuzzing/run_fuzzing.sh DaveGamble/cJSON
Drei Schichten, von oben nach unten:
┌────────────────────────────────────────────────────────────────────┐
│ 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 │
└────────────────────────────────────────────────────────────────────┘
Wichtige Designregeln: