Segurança de aplicações
Fuzz testing
Também conhecido como: Fuzzing
Definição
Técnica de testes automatizados que submete um programa a grandes volumes de entradas malformadas, aleatórias ou inesperadas para revelar crashes, corrupção de memória e vulnerabilidades.
Exemplos
- OSS-Fuzz executando libFuzzer continuamente contra o parser do OpenSSL para encontrar corrupções de memória.
- Jazzer fazendo fuzz em um parser JSON Java para encontrar DoS via entrada profundamente aninhada.
Termos relacionados
Fuzzing por mutação
Estratégia de fuzzing que cria novas entradas de teste mutando aleatoriamente amostras válidas — bit flips, inserção de bytes, splice de arquivos.
Fuzzing guiado por cobertura
Técnica de fuzzing que instrumenta o alvo para medir cobertura de código e evolui entradas que exploram caminhos novos, aumentando muito a eficácia.
Execução simbólica
Técnica de análise de programas que executa o código com entradas simbólicas em vez de valores concretos, criando restrições de caminho resolvidas por um solver SMT.
DAST (Dynamic Application Security Testing)
Testes de segurança caixa-preta que interagem com a aplicação em execução pela rede para descobrir vulnerabilidades visíveis apenas em tempo de execução.
Buffer overflow
Falha de segurança de memória em que um programa escreve para além do fim de um buffer alocado, corrompendo memória adjacente e permitindo frequentemente execução de código.
Secure Coding
Secure Coding — definition coming soon.