Um pipeline de fuzzing orientado por LLM alimentado pelo GitHub Security Lab Taskflow Agent
Um pipeline de fuzzing no estilo OSS-Fuzz, orientado por LLM, para projetos nativos em C/C++. AFL++ para execução, clang+lcov para cobertura, um agente LLM para escrita de harness, decisões baseadas em feedback de cobertura, triagem e relatórios.
Este repositório contém o taskflow de fuzzing para o
GitHub Security Lab Taskflow Agent.
Ele depende do repositório complementar
seclab-taskflows
para alguns blocos de construção compartilhados
(taskflow fetch_source_code, toolboxes local_file_viewer / gh_file_viewer
e o model_config padrão) — esses são instalados
automaticamente como uma dependência Python.
Contribuições são bem-vindas! Consulte CONTRIBUTING.md para diretrizes.
aptgh)pip install git+https://github.com/GitHubSecurityLab/seclab-taskflows-fuzzing
Isso traz seclab-taskflow-agent e seclab-taskflows (pai)
transitivamente, então toda referência pontuada da forma
seclab_taskflows.taskflows.audit.*,
seclab_taskflows.toolboxes.local_file_viewer,
seclab_taskflows.toolboxes.gh_file_viewer, e
seclab_taskflows.configs.model_config é resolvida a partir da distribuição
pai em tempo de execução.
Este taskflow é um pipeline de fuzzing totalmente autônomo. Dado um repositório GitHub de um projeto nativo em C/C++, ele irá:
.afl instrumentado com AFL++, um binário .cmplog instrumentado
com CMPLOG do AFL++ e um binário .cov instrumentado com cobertura do clang,O pipeline é no estilo OSS-Fuzz: usa muitas das mesmas técnicas (mutadores e dicionários por formato, splicing de tokens ciente da estrutura, melhorias de harness guiadas por cobertura, relatórios legíveis por máquina, crashes deduplicados por hash de pilha), mas é muito menor e autocontido.
# Inside the codespace (or a host with python + git available):
./scripts/fuzzing/run_fuzzing.sh tukaani-project/xz
Essa é toda a interface. O script é autónomo; irá instalar o AFL++
na primeira execução e, em seguida, conduzir o resto do fluxo de tarefas. Os ficheiros de saída são escritos
em ~/.local/share/seclab-taskflow-agent/seclab-taskflows/.
O dashboard inicia automaticamente em segundo plano; num Codespace, a porta 8765 é
reencaminhada automaticamente — abra-a em qualquer navegador para acompanhar o progresso em direto.
Para um teste rápido de verificação, use um alvo pequeno:
./scripts/fuzzing/run_fuzzing.sh DaveGamble/cJSON
Três camadas, de cima para baixo:
┌────────────────────────────────────────────────────────────────────┐
│ 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 │
└────────────────────────────────────────────────────────────────────┘
Regras de design principais: