Fuzz Testing es una técnica de prueba de software que utiliza datos no válidos, inesperados o aleatorios como entrada y luego busca excepciones como bloqueos y posibles pérdidas de memoria. Es una técnica de prueba automatizada que se realiza para describir los procesos de prueba del sistema que involucran un enfoque aleatorio o distribuido. Durante las pruebas de fuzz, el sistema o la aplicación de software pueden tener muchos errores o fallas diferentes relacionados con la entrada de datos. Barton Miller de la Universidad de Wisconsin en 1989 desarrolló por primera vez la prueba de fuzz.
Objetivo de Fuzz Testing:
El objetivo de Fuzz Testing es:
- Para comprobar la vulnerabilidad del sistema o aplicación de software.
- Detectar las fallas y defectos de seguridad.
- Determinar los defectos en el costo efectivo.
Fases de la prueba Fuzz:
- Identificar el sistema de destino:
se marca el sistema o la aplicación de software que se va a probar. Ese sistema se conoce como el sistema de destino. El equipo de prueba identifica el sistema de destino. - Identificar entradas:
una vez que se establece el sistema de destino, se crean las entradas aleatorias con el propósito de la prueba. Estos casos de prueba aleatorios se utilizan como entradas para probar el sistema o la aplicación de software. - Generar datos fuzzed:
después de obtener las entradas aleatorias, es decir, inesperadas e inválidas, estas entradas no válidas e inesperadas se convierten en datos fuzzed. Los datos difusos son básicamente entradas aleatorias en forma de lógica difusa. - Ejecute la prueba usando datos fuzzed:
ahora se realiza el proceso de prueba de datos fuzzed. Básicamente, en esta sección, el código del programa o el software se ejecuta proporcionando una entrada aleatoria, es decir, datos fuzzed. - Supervise el comportamiento del sistema:
después de la ejecución del sistema o la aplicación de software, opere en busca de fallas o cualquier otra excepción, como posibles pérdidas de memoria. El comportamiento del sistema se prueba bajo la entrada aleatoria. - Registro de Defectos:
En la última fase se identifican los defectos y se corrigen estos defectos para obtener un sistema o aplicación de software de mejor calidad.
Tipos de defectos detectados por Fuzz Testing:
1. Number Fuzzing 2. Character Fuzzing 3. Application Fuzzing 4. Protocol Fuzzing 5. File Format Fuzzing
Ventajas de las pruebas de Fuzz:
- Garantiza la seguridad del software.
- Detecta los defectos, incluidos bloqueos y posibles fugas de memoria.
- Consume menos tiempo.
Desventajas de las pruebas Fuzz:
- No es capaz de proporcionar una seguridad completa del sistema.
- No es eficaz para hacer frente a las amenazas de seguridad que no tienen virus, errores o fallas en el programa.
- Detecta fallas simples y amenazas.