¿Qué es fuzzing? Google ha encontrado miles de vulnerabilidades en proyectos de código abierto críticos (OpenSSL, libpng, FFmpeg, el kernel de Linux) utilizando OSS-Fuzz, su plataforma de fuzzing continuo. Apple parchea regularmente vulnerabilidades encontradas mediante fuzzing en iOS.
Los programas de bug bounty de las principales plataformas tecnológicas reciben reportes descubiertos con herramientas de fuzzing como FFUF cada semana. El fuzzing no es una técnica de nicho ni una herramienta de pentesters avanzados.
Es una de las técnicas más efectivas para encontrar vulnerabilidades que el análisis manual y el código review convencional pasan por alto sistemáticamente, precisamente porque explora automáticamente una cantidad de entradas que ningún humano podría probar manualmente.
Esta guía explica qué es el fuzzing, cómo funciona, los tipos más importantes, las herramientas que usa el mercado y cómo se aplica en pentesting web, análisis de binarios y programas de bug bounty.
Qué es fuzzing
Fuzzing (también llamado fuzz testing) es una técnica automatizada de prueba de seguridad que consiste en enviar grandes volúmenes de entradas aleatorias, malformadas o inesperadas a una aplicación, API, protocolo o sistema para observar cómo responde.
La herramienta que realiza el fuzzing se llama fuzzer. El fuzzer genera entradas, las envía al objetivo y monitoriza el comportamiento en busca de anomalías: crashes, timeouts, respuestas inesperadas, errores de memoria o cualquier comportamiento que no debería ocurrir con entradas bien formadas.
La lógica es simple pero poderosa: cualquier aplicación tiene puntos de entrada (formularios, APIs, parsers de archivos, parámetros de URL, protocolos de red). Si esa aplicación no valida correctamente todas las entradas posibles, un fuzzer puede encontrar la combinación que hace que falle antes que un atacante.
El fuzzing se usa en dos contextos distintos:
- Defensivo (testing): los equipos de desarrollo y seguridad usan fuzzing para encontrar y corregir vulnerabilidades antes de que el software llegue a producción.
- Ofensivo (pentesting / bug bounty): los pentesters y cazadores de bugs usan fuzzing para descubrir vulnerabilidades en sistemas objetivo durante auditorías de seguridad autorizadas o programas de bug bounty.
Cómo funciona el fuzzing

🔴 ¿Quieres entrar de lleno a la Ciberseguridad? 🔴
Descubre el Ciberseguridad Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada
👉 Prueba gratis el Bootcamp en Ciberseguridad por una semanaEl proceso de fuzzing tiene cuatro fases que se repiten en bucle hasta encontrar comportamientos anómalos o agotar el tiempo asignado.
| Fase | Qué ocurre |
|---|---|
| 1. Generación de entradas | El fuzzer genera entradas según su estrategia: aleatorias, mutadas desde un corpus, basadas en diccionario o guiadas por cobertura de código. |
| 2. Envío al objetivo | Las entradas generadas se envían al punto de entrada del sistema: parámetro de URL, campo de formulario, endpoint de API, parser de archivo o socket de red. |
| 3. Monitorización | El fuzzer observa la respuesta del sistema buscando anomalías: crashes, códigos de error inesperados, timeouts, cambios en el tamaño de la respuesta o redirecciones. |
| 4. Análisis y reporte | Las entradas que generaron comportamiento anómalo se guardan para análisis posterior. En fuzzing de binarios, se analiza el crash para determinar si es explotable. |
Tipos de fuzzing
Por nivel de conocimiento del objetivo
Black box fuzzing no requiere acceso al código fuente ni al binario del objetivo. El fuzzer envía entradas desde fuera y observa el comportamiento externo. Es el tipo más usado en pentesting web y bug bounty donde no se tiene acceso al código de la aplicación.
White box fuzzing tiene acceso completo al código fuente o al binario instrumentado. Permite análisis de cobertura de código y direccionar las entradas hacia las partes del código menos ejercitadas. Es el tipo más efectivo para encontrar vulnerabilidades profundas.
Grey box fuzzing combina ambos: tiene acceso parcial al sistema (normalmente el binario compilado) y usa instrumentación para medir la cobertura de código sin acceder al código fuente. AFL y AFL++ son los fuzzers más conocidos de este tipo.
Por estrategia de generación de entradas
Fuzzing de mutación toma un corpus de entradas válidas conocidas y las modifica aleatoriamente: invierte bits, cambia valores, añade caracteres especiales o modifica la longitud. Es el método más extendido y el que usan AFL y LibFuzzer.
Fuzzing basado en generación construye entradas desde cero basándose en la especificación del protocolo o formato. Es más preciso pero requiere más configuración. Útil para protocolos de red con formatos bien definidos.
Fuzzing basado en diccionario usa listas predefinidas de valores potencialmente problemáticos: payloads de inyección SQL, XSS, paths de directorios comunes, nombres de parámetros habituales. FFUF y Gobuster usan este enfoque con wordlists como las de SecLists.
Coverage-guided fuzzing instrumenta el código para medir qué partes se ejecutan con cada entrada. Las entradas que incrementan la cobertura se guardan y mutan para generar nuevas variantes. Es el más eficiente para análisis de binarios.
Herramientas de fuzzing más usadas en ciberseguridad
FFUF — Fuzz Faster U Fool (web fuzzing)
FFUF es actualmente la herramienta de fuzzing web más usada en pentesting y bug bounty. Permite descubrir directorios y archivos ocultos, endpoints de API no documentados, parámetros HTTP y subdominos mediante wordlists. Es extremadamente rápida y flexible.
# Descubrir directorios ocultos
ffuf -w /wordlists/directory-list.txt -u https://objetivo.com/FUZZ
# Fuzzing de parámetros GET
ffuf -w /wordlists/params.txt -u https://objetivo.com/api?FUZZ=valor
# Fuzzing de subdominos
ffuf -w /wordlists/subdomains.txt -u https://FUZZ.objetivo.com -H "Host: FUZZ.objetivo.com"
# Filtrar por código de respuesta
ffuf -w wordlist.txt -u https://objetivo.com/FUZZ -fc 404
Gobuster (web fuzzing)
Alternativa popular a FFUF, especialmente en entornos CTF. Muy usada para descubrimiento de directorios y DNS. Sintaxis más simple pero menos flexible que FFUF para casos complejos.
# Descubrimiento de directorios
gobuster dir -u https://objetivo.com -w /wordlists/common.txt
# Descubrimiento DNS
gobuster dns -d objetivo.com -w /wordlists/subdomains.txt
Burp Suite Intruder (web application fuzzing)
Burp Suite es la suite de pentesting web de referencia. Su módulo Intruder permite hacer fuzzing con control total sobre las peticiones HTTP: definir posiciones de inyección, tipos de payloads y reglas de filtrado de respuestas. La versión Community tiene limitaciones de velocidad; la Professional elimina ese límite.
AFL++ (coverage-guided fuzzing de binarios)
AFL++ (fork mejorado del original AFL) es el fuzzer de binarios de referencia para análisis de código nativo en C y C++. Instrumenta el binario para medir cobertura de código y dirige la mutación hacia las partes menos ejercitadas. Es la herramienta que Google usa en OSS-Fuzz para encontrar vulnerabilidades en proyectos de código abierto.
# Compilar el binario con instrumentación AFL
afl-gcc -o programa_fuzz programa.c
# Ejecutar el fuzzer
afl-fuzz -i corpus/ -o resultados/ ./programa_fuzz @@
LibFuzzer (in-process fuzzing)
LibFuzzer es un fuzzer in-process integrado en LLVM. A diferencia de AFL, corre dentro del mismo proceso del programa, lo que elimina el overhead de lanzar nuevos procesos por cada entrada. Se usa ampliamente en Google (junto con sanitizers como AddressSanitizer) para encontrar vulnerabilidades de memoria.
Radamsa (generación de entradas malformadas)
Radamsa es un generador de casos de prueba que toma ejemplos de entradas válidas y genera variantes malformadas. No necesita acceso al código fuente ni instrumentación. Es simple de usar y efectivo para fuzzing de aplicaciones que consumen archivos o datos estructurados.
Boofuzz (fuzzing de protocolos)
Boofuzz es el sucesor de Sulley, el fuzzer de protocolos de red de referencia. Permite definir la estructura de un protocolo y generar variantes para probar implementaciones de servidores y clientes. Muy usado en pentesting de IoT, sistemas industriales y protocolos propietarios.
Fuzzing en aplicaciones web: el caso de uso más frecuente en pentesting

En pentesting web, el fuzzing tiene tres aplicaciones principales. Descubrimiento de contenido oculto. Directorios, archivos de configuración, paneles de administración, backups, endpoints de API no documentados. FFUF con wordlists de SecLists (especialmente directory-list-2.3-medium.txt y raft-medium-words.txt) es la combinación más efectiva para esta tarea.
Fuzzing de parámetros. Identificar parámetros HTTP que la aplicación acepta pero no documenta, probar valores malformados en parámetros conocidos para encontrar inyecciones SQL, XSS o path traversal, y descubrir campos ocultos en formularios.
Fuzzing de autenticación. Probar credenciales con diccionarios de contraseñas comunes, forzar tokens o códigos de verificación de longitud conocida, y encontrar endpoints de reset de contraseña o recuperación de cuenta vulnerables.
OSS-Fuzz: cómo Google usa el fuzzing a escala
OSS-Fuzz es el proyecto de Google que ejecuta fuzzing continuo sobre más de 1.000 proyectos de código abierto críticos: OpenSSL, libpng, FreeType, SQLite, el kernel de Linux, FFmpeg y muchos más. Desde su lanzamiento ha encontrado más de 10.000 vulnerabilidades en proyectos de código abierto.
El modelo es sencillo: los mantenedores de proyectos integran su código con LibFuzzer o AFL++, Google ejecuta el fuzzing en infraestructura cloud de forma continua y cualquier crash encontrado se reporta automáticamente a los mantenedores.
Es el ejemplo más claro de cómo el fuzzing a escala industrializa el descubrimiento de vulnerabilidades.
Consideraciones legales: fuzzing con permiso
El fuzzing sobre sistemas ajenos sin autorización es un delito en España bajo el artículo 197 bis del Código Penal (acceso no autorizado a sistemas informáticos). Antes de aplicar cualquier técnica de fuzzing sobre un sistema, es imprescindible tener autorización explícita por escrito del propietario.
Las formas legales de practicar fuzzing son:
- Programas de bug bounty: plataformas como HackerOne, Bugcrowd o Intigriti definen el alcance autorizado (targets, técnicas permitidas) dentro del cual se puede hacer fuzzing legalmente y cobrar por las vulnerabilidades encontradas.
- Entornos propios: laboratorios virtuales, máquinas de Hack The Box o TryHackMe, aplicaciones vulnerables diseñadas para práctica como DVWA o WebGoat.
- Pentesting con contrato: auditorías de seguridad formales donde el cliente firma la autorización de las pruebas a realizar.
Álvaro llegó al Bootcamp de Ciberseguridad de KeepCoding desde IBM, donde gestionaba equipos de seguridad perimetral. Buscaba formación que le diera visión del campo completo antes de especializarse, tanto en el lado ofensivo como en el defensivo.
Hoy trabaja en el Blue Team de Airbus Cybersecurity. La formación le ayudó a entender el ecosistema completo de herramientas de análisis de seguridad, incluyendo técnicas de descubrimiento de vulnerabilidades que usa en su trabajo cotidiano.
Cómo aprender fuzzing de forma profesional
El fuzzing se aprende mejor en entornos de práctica controlados. Las plataformas Hack The Box y TryHackMe tienen máquinas específicamente diseñadas para practicar técnicas de descubrimiento de contenido con FFUF y Gobuster. Los programas de bug bounty son el paso siguiente: permiten practicar sobre sistemas reales con autorización y potencialmente obtener recompensas económicas.
Para quien quiere aprender ciberseguridad de forma estructurada con herramientas reales, el Ciberseguridad Full Stack Bootcamp de KeepCoding cubre el ecosistema completo de técnicas ofensivas y defensivas, con profesores en activo en el sector y proyectos reales desde el primer módulo.
Conclusión

El fuzzing es una de las técnicas más efectivas en el arsenal de cualquier profesional de ciberseguridad porque automatiza la búsqueda de vulnerabilidades que el análisis manual no puede cubrir a escala. Ciberseguridad Full Stack Bootcamp de KeepCoding.
Desde el descubrimiento de directorios ocultos en aplicaciones web con FFUF hasta el análisis de vulnerabilidades de memoria en binarios con AFL++, el fuzzing cubre un espectro amplio de casos de uso tanto en pentesting ofensivo como en testing defensivo.
Las herramientas son accesibles y la mayoría son de código abierto. Lo que diferencia al profesional que usa fuzzing de forma efectiva es el criterio para elegir la herramienta correcta, configurar el corpus de entradas adecuado, interpretar los resultados y distinguir los crashes explotables de los que no tienen impacto de seguridad real.
La referencia más completa de wordlists para fuzzing web es el repositorio SecLists de Daniel Miessler, el estándar de facto en pentesting web con más de 50 millones de descargas.



