Una guía completa para las pruebas de fuzz

Publicado: 2021-05-17

Las pruebas de seguridad son uno de los pasos más importantes para garantizar que su software esté listo para su lanzamiento oficial, ya sea para fines comerciales o comerciales. Le permite detectar cualquier vulnerabilidad que pueda tener su software y desarrollar una contramedida para ellas si un hacker se aprovecha de tal falla.

Si está interesado en las pruebas de seguridad, puede conocer los hechos aquí ahora, pero una cosa que debe saber es que hay todo tipo de formas de realizar pruebas de seguridad, como la evaluación de riesgos, las pruebas de penetración y el análisis de vulnerabilidades. Y si ya está un poco familiarizado con las pruebas de seguridad, probablemente haya oído hablar del término "prueba de fuzz".

Fuzz testing es una técnica de prueba relativamente común en la industria hoy en día, especialmente porque los gigantes corporativos como Microsoft y Google la han estado usando durante más de una década. Pero lo sorprendente es que, a pesar de ser una técnica estándar, no mucha gente la conoce. Dicho esto, esta guía pretende explicar qué es el fuzz testing, comenzando por su definición.

¿Qué es la prueba de fuzz?

Fuzz testing, o lo que otros llaman 'fuzzing', implica ingresar datos no válidos o aleatorios en un programa para detectar cualquier vulnerabilidad que pueda conducir a errores explotables. Esta entrada puede ser en forma de archivo o una entrada directa del usuario. Entonces, por ejemplo, si está creando algún tipo de programa de cálculo, generalmente necesita ingresar números u operaciones matemáticas. Pero si está realizando una prueba de fuzz, deberá ingresar una entrada no válida, como letras o incluso caracteres especiales.

Si al hacerlo se bloquea el programa o provoca cualquier otro tipo de error, el programador asume que existe una vulnerabilidad y, por lo tanto, puede modificar la codificación con la esperanza de solucionar el problema. A primera vista, pensaría que las pruebas de fuzz son lo mismo que otras técnicas como el análisis de vulnerabilidades o las pruebas de penetración, pero hay una razón para su popularidad.

¿Por qué las empresas utilizan pruebas de fuzz?

No existe una solución única para todos cuando se trata de pruebas de seguridad. Cada método puede detectar problemas que otros no pueden; algunos requieren costos operativos más bajos, mientras que otros son más fáciles de realizar. Al igual que todas las técnicas de prueba de seguridad, la prueba de fuzz es única a su manera. A continuación se presentan algunas ventajas que impulsan a las empresas a utilizar pruebas de fuzz.

  • Simplicidad: ya sabe cómo funciona la prueba de fuzz: se trata de ingresar una entrada no válida en un programa. La simplicidad del proceso en general sirve como una gran ventaja para las personas u organizaciones que carecen de habilidades y experiencia en términos de pruebas de seguridad.
  • Automatización: las pruebas de seguridad pueden ser un paso crucial en el desarrollo de software y aplicaciones, pero a menudo hay otras cosas que hacer además de probar constantemente el programa. Sin embargo, es una historia diferente con las pruebas de fuzz ya que puede automatizar todo el proceso usando fuzzers.

Los fuzzers son herramientas responsables de ingresar datos en el programa automáticamente si se les da el comando y las condiciones necesarias. El hecho de que las pruebas de fuzz permitan la automatización empresarial las convierte en una técnica de prueba ideal para las empresas.

  • Conveniente: por lo general, al realizar pruebas, es necesario utilizar tantas herramientas como sea posible para reducir la probabilidad de errores y maximizar la seguridad del programa. Dado que la prueba de fuzz es automatizable y sencilla, es una forma conveniente de mejorar la seguridad del software.

Fuzzing, en general, es simple y fácil de implementar, pero vale la pena señalar que existen todo tipo de enfoques para las pruebas de fuzz. Según el tipo que utilice, la dificultad y la complejidad del proceso de prueba pueden variar. En ese sentido, este podría ser un buen momento para hablar sobre los diferentes tipos de pruebas de fuzz.

Diferentes enfoques para las pruebas de fuzz

Aunque existen varios tipos de pruebas de fuzz, en su mayoría son similares entre sí, excepto que generan entradas de manera diferente. Independientemente, hay cuatro enfoques para las pruebas de fuzz:

  • Dumb Fuzzing: cuando uno quiere generar una entrada completamente aleatoria, generalmente usa un fuzzer tonto. Un fuzzer tonto es una herramienta que produce entrada sin conocimiento previo o inteligencia del programa, de ahí el nombre.

Por ejemplo, si está creando un programa de revisión gramatical, un fuzzer tonto puede terminar generando una imagen, que está lejos de lo que espera el programa. Dumb fuzzing es el enfoque más fácil para las pruebas de fuzz.

  • Smart Fuzzing: En el otro lado de la moneda está el smart fuzzing. A diferencia del fuzzing tonto, el fuzzing inteligente genera información sabiendo lo que el programa espera recibir. Además, un fuzzer inteligente no generará entradas que inevitablemente bloqueen el programa. En cambio, generará una entrada que puede causar un comportamiento inesperado.

Entonces, en el ejemplo anterior, un fuzzer inteligente podría generar caracteres especiales pero nunca una imagen o cualquier otra entrada inadecuada. Aunque los fuzzers inteligentes son más difíciles de implementar que los fuzzers tontos, son más precisos la mayor parte del tiempo.

  • Fuzzing mutacional: El fuzzing mutacional implica generar entradas modificando o, más específicamente, 'mutando' una entrada válida existente. En nuestro ejemplo con el programa de calculadora, un fuzzer mutacional puede elegir una entrada válida existente.

Suponga que la entrada seleccionada es '10+9.' Un fuzzer mutacional intentará modificar esta entrada agregando, eliminando o alterando una parte de esta entrada, como aumentar el valor y convertirlo en '180+129' o cambiar la operación para que dé como resultado '10/9'.

  • Fuzzing generacional: por último, el fuzzing generacional genera información desde cero, que es lo opuesto al fuzzing mutacional que genera información a partir de las existentes. Dado que no hay referencias, los fuzzers generacionales son mucho más difíciles de implementar que los fuzzers mutacionales, pero pueden generar más datos para el probador.

Lo que hace que las pruebas de fuzz sean un poco más interesantes que otras técnicas es que puede combinar diferentes tipos para mejorar la herramienta de prueba. Por ejemplo, puede crear un fuzzer mutacional inteligente o un fuzzer generacional tonto, según lo que necesite su programa. Quizás las innumerables combinaciones que puede realizar con las pruebas de fuzz son otra razón por la que las empresas prefieren las pruebas de fuzz a otros métodos.

Terminando

Una vez que conozca más acerca de las pruebas de fuzz, es fácil ver por qué se ha vuelto tan popular como lo es ahora. Sin embargo, también vale la pena señalar que, al igual que cualquier otra técnica, la prueba de fuzz tiene algunas desventajas. Por lo tanto, es esencial determinar si las pruebas de fuzz pueden hacer más bien que mal a su aplicación o software. Como se dijo anteriormente, no existe una solución única para las pruebas de seguridad del software, y las pruebas de fuzz ciertamente no serán esa solución.

¿Tiene alguna idea sobre esto? Háganos saber a continuación en los comentarios o lleve la discusión a nuestro Twitter o Facebook.

Recomendaciones de los editores: