implementing-fuzz-testing-in-cicd-with-aflplusplus
Faz seu agente integrar testes de fuzzing no processo de desenvolvimento. Ele encontra erros de memória e vulnerabilidades em código C/C++. É útil para melhorar a segurança de software compilado.
O que ela faz
Esta ferramenta ajuda a encontrar erros em programas de computador, especialmente aqueles que lidam com informações vindas de fora. Ela faz isso testando o programa com muitas entradas diferentes de forma automática e inteligente.
Quando usar
- ✓Ao adicionar testes automáticos para encontrar falhas em programas.
- ✓Ao procurar por bugs de segurança em programas que processam dados.
- ✓Ao integrar testes de segurança em processos de desenvolvimento contínuo.
Exemplo do que pedir para a IA
“Integre testes automáticos para encontrar falhas em programas de computador no meu processo de desenvolvimento.”
Quer saber mais? Abra as seções abaixo.
Como usar
O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.
Link da skill
Mensagem pronta para colar
Como funciona
A ferramenta insere um código especial no programa para monitorar quais partes dele são executadas. Ela então gera dados de teste aleatórios e usa as informações de execução para encontrar novas maneiras de testar o programa e descobrir erros.
Instalação
Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.
No terminal (Claude Code, Codex, Cursor), na pasta do projeto:
npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill implementing-fuzz-testing-in-cicd-with-aflplusplusOu baixe só o arquivo:
curl -L https://raw.githubusercontent.com/mukul975/Anthropic-Cybersecurity-Skills/main/skills/implementing-fuzz-testing-in-cicd-with-aflplusplus/SKILL.md -o SKILL.mdConteúdo técnico (SKILL.md)
Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.
Implementando Testes de Fuzzing em CI/CD com AFL++
Visão Geral
AFL++ (American Fuzzy Lop Plus Plus) é um fork mantido pela comunidade do AFL que oferece testes de fuzzing de ponta guiados por cobertura para descobrir vulnerabilidades em aplicações compiladas. O AFL++ usa algoritmos genéticos para mutar entradas, rastreando a cobertura de código para encontrar novos caminhos de execução que acionam falhas, travamentos e comportamento indefinido. Em ambientes de CI/CD, o AFL++ pode ser integrado para testar continuamente parsers, manipuladores de protocolo, processadores de formato de arquivo e qualquer código que lide com entradas não confiáveis. O AFL++ suporta modo persistente para fuzzing de alta velocidade (até 100.000+ execuções por segundo), mutadores personalizados, modo QEMU para fuzzing apenas de binários e CmpLog/RedQueen para extração automática de dicionário.
Quando Usar
- Ao implantar ou configurar a implementação de testes de fuzzing em cicd com capacidades aflplusplus em seu ambiente
- Ao estabelecer controles de segurança alinhados aos requisitos de conformidade
- Ao construir ou melhorar a arquitetura de segurança para este domínio
- Ao realizar avaliações de segurança que exigem esta implementação
Pré-requisitos
- Runners de CI baseados em Linux (o AFL++ não suporta Windows nativamente)
- Toolchain de compilador GCC ou Clang
- AFL++ instalado (
apt install aflplusplusou compilado a partir do código-fonte) - Aplicação alvo com funções de harness isolando o processamento de entrada
- Corpus de sementes de amostras de entrada válidas
Conceitos Principais
Testes de Fuzzing Guiados por Cobertura
O AFL++ instrumenta o binário alvo em tempo de compilação (ou via QEMU/Frida para alvos apenas de binários) para rastrear quais caminhos de código cada entrada exercita. Quando uma entrada mutada aciona um novo caminho de código, ela é salva no corpus para mutação adicional. Esse loop de feedback permite que o AFL++ explore sistematicamente o espaço de estado do programa.
Modos de Instrumentação
| Modo | Caso de Uso | Desempenho |
|---|---|---|
afl-clang-fast (LTO) |
Código-fonte disponível, melhor desempenho | Mais Alto |
afl-clang-fast |
Código-fonte disponível, padrão | Alto |
afl-gcc-fast |
Projetos baseados em GCC | Alto |
QEMU mode |
Apenas binário, sem código-fonte | Médio |
Frida mode |
Apenas binário, multiplataforma | Médio |
Unicorn mode |
Firmware, embarcado | Baixo |
Modo Persistente
O modo persistente evita a sobrecarga de fork, realizando fuzzing dentro de um loop:
#include <unistd.h>
__AFL_FUZZ_INIT();
int main() {
__AFL_INIT();
unsigned char *buf = __AFL_FUZZ_TESTCASE_BUF;
while (__AFL_LOOP(10000)) {
int len = __AFL_FUZZ_TESTCASE_LEN;
// Process buf[0..len-1]
parse_input(buf, len);
}
return 0;
}
Fluxo de Trabalho
Etapa 1 --- Construir o Harness de Fuzzing
Crie um harness que alimente a entrada do AFL++ para a função alvo:
// fuzz_harness.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "target_parser.h"
__AFL_FUZZ_INIT();
int main() {
__AFL_INIT();
unsigned char *buf = __AFL_FUZZ_TESTCASE_BUF;
while (__AFL_LOOP(10000)) {
int len = __AFL_FUZZ_TESTCASE_LEN;
if (len < 4) continue;
// Reset state between iterations
parser_context_t ctx;
parser_init(&ctx);
parser_process(&ctx, buf, len);
parser_cleanup(&ctx);
}
return 0;
}
Etapa 2 --- Compilar com Instrumentação AFL++
# Standard instrumentation
export CC=afl-clang-fast
export CXX=afl-clang-fast++
# Enable AddressSanitizer for better crash detection
export AFL_USE_ASAN=1
# Build the target with instrumentation
$CC -o fuzz_harness fuzz_harness.c -ltarget_parser -fsanitize=address
# Build a CmpLog binary for better coverage
$CC -o fuzz_harness_cmplog fuzz_harness.c -ltarget_parser \
-fsanitize=address -DCMPLOG
Etapa 3 --- Preparar o Corpus de Sementes
mkdir -p corpus/
# Add valid input samples
cp test_inputs/* corpus/
# Minimize the corpus
afl-cmin -i corpus/ -o corpus_min/ -- ./fuzz_harness @@
# Further minimize individual inputs
mkdir -p corpus_tmin/
for f in corpus_min/*; do
afl-tmin -i "$f" -o "corpus_tmin/$(basename $f)" -- ./fuzz_harness @@
done
Etapa 4 --- Configurar a Integração CI/CD
GitHub Actions:
name: Fuzz Testing
on:
push:
branches: [main]
schedule:
- cron: '0 2 * * *' # Fuzzing noturno
jobs:
fuzz:
runs-on: ubuntu-latest
timeout-minutes: 120
steps:
- uses: actions/checkout@v4
- name: Instalar AFL++
run: |
sudo apt-get update
sudo apt-get install -y aflplusplus
- name: Restaurar cache do corpus
…
Perguntas frequentes
O que é 'fuzz testing'?
É um tipo de teste onde o programa é alimentado com dados aleatórios ou inesperados para ver se ele falha ou se comporta de maneira incorreta, ajudando a encontrar bugs.
O que é CI/CD?
CI/CD significa Integração Contínua/Entrega Contínua. É uma prática no desenvolvimento de software onde as mudanças são testadas e integradas frequentemente, tornando o processo mais rápido e seguro.
Por que usar AFL++?
AFL++ é uma ferramenta avançada que usa 'cobertura de código' para guiar os testes, tornando a busca por falhas mais eficiente do que testes aleatórios simples.
Detalhes
Descrição original do autor
Integrates AFL++ coverage-guided fuzzing into CI/CD pipelines, covering harness construction, AFL++/AddressSanitizer/CmpLog instrumentation builds, and persistent-mode fuzzing to discover memory-corruption and input-handling vulnerabilities in C/C++ code. Use when adding automated fuzz testing to a build pipeline or hunting for memory-safety bugs in native/compiled applications.
Popularidade
- Estrelas no GitHub
- 35 mil
- Posição no ranking
- #5878
- Licença
- Apache-2.0
- Atualizada em
- 31/08/2026
Comentários
- …
Mais skills deste repositório
abusing-dpapi-for-credential-access
Dá ao seu agente de IA instruções prontas para uma tarefa específica, para ele fazer melhor e mais rápido.
mukul975/Anthropic-Cybersecurity-Skills
abusing-shadow-credentials-for-privesc
Ensina seu agente de IA a escrever textos claros e bem estruturados.
mukul975/Anthropic-Cybersecurity-Skills
achieving-cmmc-level-2-compliance
Ajuda seu agente a preparar um ambiente para conformidade com CMMC Nível 2. Ele implementa requisitos de segurança e gerencia a documentação necessária.
mukul975/Anthropic-Cybersecurity-Skills
acquiring-disk-image-with-dd-and-dcfldd
Ajuda seu agente a criar cópias exatas de discos rígidos. Isso é útil para garantir que nenhuma informação seja perdida ou alterada durante investigações.
mukul975/Anthropic-Cybersecurity-Skills
Skills parecidas
cpp-testing
Faz seu agente escrever e melhorar testes para código C++. Ajuda a configurar ferramentas de teste e a corrigir erros.
affaan-m/ECC
csharp-testing
Ajuda seu agente a criar testes para código C# e .NET. Ele usa as melhores práticas para garantir que os testes sejam eficientes e confiáveis.
affaan-m/ECC
django-tdd
Faz seu agente aplicar estratégias de teste para Django com pytest-django e TDD. É útil para escrever testes robustos e garantir a qualidade do código, especialmente para APIs DRF.
affaan-m/ECC