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.
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
Fuzzing por mutación
Estrategia de fuzzing que crea nuevas entradas de prueba mutando aleatoriamente muestras válidas existentes: invirtiendo bits, insertando bytes o combinando archivos.
Fuzzing guiado por cobertura
Técnica de fuzzing que instrumenta el objetivo para medir cobertura de código y evoluciona entradas que exploran caminos nuevos, mejorando enormemente la eficacia.
Ejecución simbólica
Técnica de análisis de programas que ejecuta el código con entradas simbólicas en vez de valores concretos, construyendo restricciones de ruta resueltas por un solver SMT para encontrar bugs.
DAST (Pruebas dinámicas de seguridad de aplicaciones)
Pruebas de seguridad de caja negra que interactúan con la aplicación en ejecución por red para detectar vulnerabilidades visibles solo en tiempo de ejecución.
Desbordamiento de búfer
Fallo de seguridad de memoria en el que un programa escribe más allá del final de un búfer asignado, corrompiendo memoria adyacente y a menudo permitiendo ejecución de código.
Secure Coding
Secure Coding — definition coming soon.