Tutorial de prueba de fuzz (fuzzing)
ยฟQuรฉ es la prueba Fuzz?
Prueba de fuzz o Fuzzing es una tรฉcnica de prueba de software que consiste en colocar datos no vรกlidos o aleatorios llamados FUZZ en un sistema de software para descubrir errores de codificaciรณn y lagunas de seguridad. El propรณsito de las pruebas difusas es insertar datos utilizando tรฉcnicas automatizadas o semiautomรกticas y probar el sistema para detectar diversas excepciones, como fallas del sistema o fallas del cรณdigo integrado, etc.
Las pruebas de fuzz fueron desarrolladas originalmente por Barton Miller en la Universidad de Wisconsin en 1989. Las pruebas de fuzz o fuzzing son una tรฉcnica de prueba de software y es un tipo de Pruebas de seguridad.
ยฟPor quรฉ hacer pruebas Fuzz?
- Por lo general, las pruebas difusas encuentran la falla o defecto de seguridad mรกs grave.
- La prueba de fuzz proporciona resultados mรกs eficaces cuando se utiliza con Negro Box Pruebas, Pruebas Beta y otros mรฉtodos de depuraciรณn.
- Las pruebas Fuzz se utilizan para comprobar la vulnerabilidad del software. Se trata de tรฉcnicas de prueba muy rentables.
- Las pruebas fuzz son una de las tรฉcnicas de pruebas de caja negra. El fuzzing es uno de los mรฉtodos mรกs comunes que utilizan los hackers para encontrar vulnerabilidades en el sistema.
Cรณmo hacer pruebas difusas
Los pasos para las pruebas difusas incluyen los pasos de prueba bรกsicos:
Paso 1) Identificar el sistema objetivo
Paso 2) Identificar entradas
Paso 3) Generar datos difusos
Paso 4) Ejecute la prueba utilizando datos difusos.
Paso 5) Monitorear el comportamiento del sistema
Paso 6) Defectos de registro
Ejemplos de fuzzers
- Fuzzers basados โโen mutaciones alterar muestras de datos existentes para crear nuevos datos de prueba. Este es un enfoque muy simple y directo, comienza con muestras vรกlidas de protocolo y continรบa alterando cada byte o archivo.
- Fuzzers basados โโen generaciรณn definir nuevos datos basados โโen la entrada del modelo. Comienza a generar informaciรณn desde cero segรบn la especificaciรณn.
- Fuzzer basado en protocolo, el fuzzer mรกs exitoso es tener un conocimiento detallado del formato del protocolo que se estรก probando. La comprensiรณn depende de la especificaciรณn. Implica escribir una matriz de la especificaciรณn en la herramienta y luego, utilizando una tรฉcnica de generaciรณn de pruebas basada en modelos, revisar la especificaciรณn y agregar irregularidades en el contenido de los datos, la secuencia, etc. Esto tambiรฉn se conoce como prueba de sintaxis, prueba de gramรกtica, prueba de robustez, etc. Fuzzer puede generar casos de prueba a partir de uno existente, o puede utilizar entradas vรกlidas o no vรกlidas.
Existen dos limitaciones de la fuzzing basada en protocolos:
- Las pruebas no pueden continuar hasta que la especificaciรณn estรฉ madura.
- Muchos protocolos รบtiles son una extensiรณn de los protocolos publicados. Si las pruebas fuzz se basan en especificaciones publicadas, Cobertura de prueba para nuevos protocolos serรก limitado.
La forma mรกs simple de tรฉcnica de fuzzing es enviar entradas aleatorias al software, ya sea como paquetes de protocolo o como un evento. Esta tรฉcnica de pasar entradas aleatorias es muy poderosa para encontrar errores en muchas aplicaciones y servicios. Tambiรฉn hay otras tรฉcnicas disponibles y es muy fรกcil de implementar. Para implementar estas tรฉcnicas solo necesitamos cambiar las entradas existentes. Podemos cambiar la entrada simplemente intercambiando los bits de entrada.
Tipos de errores detectados por Fuzz Testing
- Fallos de aserciรณn y pรฉrdidas de memoria. Esta metodologรญa se usa ampliamente para aplicaciones grandes donde los errores afectan la seguridad de la memoria, lo cual es una vulnerabilidad grave.
- Entrada invรกlida En las pruebas fuzz, los fuzzers se utilizan para generar una entrada no vรกlida que se utiliza para probar rutinas de manejo de errores, y esto es importante para el software que no controla su entrada. La fuzzing simple puede considerarse una forma de automatizar las pruebas negativas.
- Errores de correcciรณn La fuzzing tambiรฉn se puede utilizar para detectar algunos tipos de errores de "correcciรณn". Como una base de datos corrupta, resultados de bรบsqueda deficientes, etc.
Herramientas de prueba de fuzz
Las herramientas que se utilizan en seguridad web se pueden utilizar ampliamente en pruebas difusas, como Burp Suite, Melocotรณn Fuzzer, etc.
- Melocotรณn Fuzzer: Peach Fuzzer proporciona una cobertura mรกs sรณlida y segura que un escรกner. Otras herramientas de prueba pueden buscar sรณlo subprocesos conocidos, mientras que Peach Fuzzer permite a los usuarios encontrar subprocesos conocidos y desconocidos.
- Proxy de pico: Es una herramienta de nivel profesional que busca vulnerabilidades a nivel de aplicaciรณn en aplicaciones web. SPIKE Proxy cubre los conceptos bรกsicos, como SQL Inyecciรณn y secuencias de comandos entre sitios, pero estรก completamente abierto Python infraestructura. SPIKE Proxy estรก disponible para Linux y Windows.
- Webescarabajo: Webscarab estรก escrito en Java por lo tanto portรกtil a muchas plataformas. Para analizar la aplicaciรณn, se utiliza el marco Webscarab que se comunica mediante los protocolos HTTP y HTTPS.por ejemplo: Webscarab funciona como un proxy interceptor, permite al operador revisar y modificar las solicitudes creadas por el navegador antes de que sean recibidas por el servidor. Tambiรฉn permite revisar y actualizar las respuestas generadas por el servidor antes de que sean recibidas por el navegador. De esta manera, si Webscarab encuentra alguna falla, crearรก una lista de los problemas informados.
- Fusible OWASP WSFuzzer: WSFuzzer es un programa GPL escrito en Python. Un programa con licencia GPL actualmente tiene como objetivo los servicios web. En la versiรณn actual de OWASPWSFuzzer, la licencia HTTP estรก basada en Servicios SOAP son el objetivo principal.
Ventajas de las pruebas fuzz
- Las pruebas fuzz mejoran el software Pruebas de seguridad.
- Los errores encontrados en la fuzzing a veces son graves y la mayorรญa de las veces los utilizan los piratas informรกticos, incluidos fallos, pรฉrdida de memoria, excepciones no controladas, etc.
- Si los evaluadores no notan alguno de los errores debido a la limitaciรณn de tiempo y recursos, esos errores tambiรฉn se encuentran en las pruebas de Fuzz.
Desventajas de las pruebas Fuzz
- Las pruebas Fuzz por sรญ solas no pueden proporcionar una imagen completa de una amenaza o error de seguridad general.
- Las pruebas Fuzz son menos efectivas para lidiar con amenazas de seguridad que no causan fallas en el programa, como algunos virus, gusanos, troyanos, etc.
- Las pruebas fuzz solo pueden detectar fallas o amenazas simples.
- Para funcionar con eficacia, se necesitarรก mucho tiempo.
- Establecer una condiciรณn de valor lรญmite con entradas aleatorias es muy problemรกtico, pero ahora, al utilizar algoritmos deterministas basados โโen las entradas de los usuarios, la mayorรญa de los evaluadores resuelven este problema.
Resumen
En Ingenierรญa de Software, las pruebas Fuzz muestran la presencia de errores en una aplicaciรณn. Fuzzing no puede garantizar la detecciรณn completa de errores en una aplicaciรณn. Pero al utilizar la tรฉcnica Fuzz, se garantiza que la aplicaciรณn sea sรณlida y segura, ya que esta tรฉcnica ayuda a exponer la mayorรญa de las vulnerabilidades comunes.

