Saltar al contenido principal

Fuzz testing - Descubrimiento de vulnerabilidades ocultas en software

Lectura de 2 min aprox.

El fuzzing es una técnica de pruebas de seguridad que introduce automáticamente grandes cantidades de datos aleatorios o semialeatorios en el software para descubrir patrones de entrada que provocan fallos o comportamientos anómalos. El proyecto OSS-Fuzz de Google ha descubierto más de 10.000 vulnerabilidades mediante el fuzzing continuo de software de código abierto, y a fecha de 2025 participan en él más de 1.000 proyectos.

Casos de uso reales

«Antes de actualizar una biblioteca de procesamiento de imágenes, ejecutamos 48 horas de fuzzing con AFL++. Encontramos tres patrones de entrada que provocaban un desbordamiento de búfer en el montón del analizador de JPEG y pudimos corregirlos antes del lanzamiento.»

El flujo del proceso de fuzzing

Preparar entradas semilla (datos de prueba válidos)
El fuzzer muta las entradas de forma aleatoria (inversión de bits, inserciones, eliminaciones)
Introducir las entradas mutadas en el programa objetivo
Retroalimentar la información de cobertura (descubriendo nuevas rutas de código)
Registrar y clasificar fallos, bloqueos y comportamientos anómalos

Tipos de fuzzing

El fuzzing se clasifica a grandes rasgos en tres tipos. El fuzzing de caja negra es el enfoque más simple: genera entradas aleatorias sin conocer la estructura interna del programa. El fuzzing de caja blanca analiza el código fuente para generar entradas que maximizan la cobertura de código. El fuzzing de caja gris evoluciona sus entradas retroalimentando la información de cobertura en tiempo de ejecución; AFL (American Fuzzy Lop) y libFuzzer son ejemplos representativos. Combinarlo con las pruebas de penetración permite un descubrimiento de vulnerabilidades más exhaustivo.libros de introducción al fuzzing (Amazon) te permiten aprenderlo de forma sistemática.

Aplicaciones prácticas

El fuzzing es especialmente eficaz para el código que procesa entradas externas, como los analizadores (JSON, XML, formatos de imagen), el manejo de protocolos de red y la entrada/salida de archivos. El "Continuous Fuzzing", que integra el fuzzing en la canalización de CI/CD para ejecutarlo de forma continua, se ha convertido en una tendencia reciente, y combinarlo con la codificación segura mejora la tasa de detección de vulnerabilidades durante la etapa de desarrollo. Protege el acceso a tu entorno de fuzzing y a tus sistemas de CI/CD con contraseñas aleatorias robustas para evitar la manipulación de los resultados de las pruebas.libros sobre pruebas de seguridad (Amazon) también son una referencia útil.

Términos relacionados

¿Te resultó útil este artículo?

XHatena