CyberGlossary

Seguridad de aplicaciones

Fuzz testing

También conocido como: Fuzzing

Definición

Técnica de pruebas automatizadas que bombardea un programa con grandes cantidades de entrada malformada, aleatoria o inesperada para descubrir caídas, corrupción de memoria y vulnerabilidades.

El fuzz testing (o fuzzing) somete a un objetivo —una función, un parser, un protocolo o una aplicación completa— a entradas mutadas o generadas, mientras se observan caídas, bloqueos, asserts o reportes de sanitizers. El objetivo es encontrar entradas que rompan propiedades de seguridad: accesos fuera de límites, use-after-free, bucles infinitos, excepciones no manejadas o fallos lógicos. Fuzzers modernos como AFL++, libFuzzer, Jazzer y Atheris usan retroalimentación de cobertura para evolucionar entradas que alcancen nuevos caminos del código, siendo muy eficaces en parsers, decoders y código criptográfico. Forma parte de los SSDLC de Google (OSS-Fuzz) o Microsoft y ha descubierto muchas CVEs de alto impacto.

Ejemplos

  • OSS-Fuzz ejecutando libFuzzer de forma continua contra el parser de OpenSSL para detectar corrupciones de memoria.
  • Jazzer fuzzeando un parser JSON en Java para encontrar DoS por entrada profundamente anidada.

Términos relacionados