Las vulnerabilidades de software son un problema importante en la ciberseguridad. Permiten que los productos de software sean atacados y cuando esos productos están conectados a redes seguras, pueden proporcionar un punto de entrada para los piratas informáticos.
Todos los productos de software profesional se prueban exhaustivamente antes de su lanzamiento. Desafortunadamente, las vulnerabilidades siguen siendo una ocurrencia común. Una forma de encontrar vulnerabilidades adicionales es utilizar una técnica de prueba de software conocida como fuzzing.
Entonces, ¿qué es el fuzzing y cómo funciona?
¿Qué es el fuzzing?
Fuzzing es una técnica de prueba de software automatizada que intenta encontrar vulnerabilidades utilizando entradas aleatorias.
El software a menudo se comporta de manera impredecible cuando el usuario ingresa una entrada diferente a la solicitada. Fuzzing es la práctica de ingresar grandes cantidades de entradas inesperadas y registrar lo que sucede. La idea es que el usuario pueda monitorear el software y determinar si hay vulnerabilidades presentes o no.
Fuzzing se utiliza para probar productos de software y por profesionales de seguridad para determinar si una red es segura. También lo utilizan los piratas informáticos que practican fuzzing para encontrar vulnerabilidades que ellos mismos pueden utilizar.
Las vulnerabilidades descubiertas por fuzzing varían ampliamente. Una entrada inesperada puede hacer que el software simplemente se bloquee. Pero también puede devolver información privada o permitir que el usuario acceda a partes del software que de otro modo estarían fuera de los límites.
¿Cuáles son las ventajas del fuzzing?
Fuzzing es solo una de las muchas formas en que los productos de software pueden probarse en busca de vulnerabilidades. Es popular porque:
- Fuzzing está completamente automatizado. Una vez que se configura un programa de fuzzing, puede continuar buscando vulnerabilidades sin intervención humana.
- Fuzzing puede encontrar vulnerabilidades que otras técnicas de prueba de software no encuentran. Debido a esto, a menudo se usa además de las técnicas manuales.
- Los hackers suelen utilizar fuzzing para encontrar vulnerabilidades de día cero. El uso de las mismas técnicas que los piratas informáticos permite a los desarrolladores encontrar vulnerabilidades de día cero antes que ellos.
¿Cómo funciona Fuzzing?
Una herramienta utilizada para fuzzing normalmente tiene tres componentes. A menudo se les llama poeta, mensajero y oráculo.
El poeta
El poeta inicia el proceso y se encarga de generar un caso de prueba. Un caso de prueba es una larga lista de entradas potenciales.
El servicio de mensajería
El mensajero inserta todas las entradas aleatorias en el software de destino. Los fuzzers están diseñados para hacer esto automáticamente, lo que permite probar grandes cantidades de entradas a granel.
El oráculo
El oráculo verifica si alguna de las entradas hace que el software haga algo diferente de lo que fue diseñado para hacer. Si el fuzzing se lleva a cabo con fines legítimos, el comportamiento se puede replicar y corregir. O si un pirata informático está realizando la fuzzing y el comportamiento inesperado es útil, puede usarse con fines maliciosos.
¿Cómo usan los atacantes el fuzzing?
Fuzzing es una técnica popular entre los piratas porque les permite encontrar vulnerabilidades en el software sin acceso al código fuente. Debido a que la fuzzing está automatizada, también es fácil de realizar. Si un pirata informático descubre una vulnerabilidad, es posible que pueda realizar los siguientes ataques.
Ataques DDoS
Si fuzzing descubre que ciertas entradas requieren mucho tiempo para procesarse, esta información puede usarse para lanzar un ataque DDoS. Un ataque DDoS implica enviar tantas solicitudes a un sistema que deja de funcionar. Fuzzing permite que las solicitudes se adapten para que requieran la mayor cantidad de recursos del sistema para responder.
Inyección SQL
Un ataque de inyección SQL es cuando se envían declaraciones SQL maliciosas a una aplicación. Si estas declaraciones no se sanean adecuadamente, pueden permitir que un atacante interactúe con la base de datos. Esto puede permitirles robar datos o modificarlos. Fuzzing es una herramienta efectiva para probar grandes cantidades de sentencias SQL y determinar si alguna produce una respuesta favorable.
Desbordamiento de búfer
Un ataque de desbordamiento de búfer es cuando se agregan más datos al búfer de un programa de los que puede manejar. En este escenario, es posible que un hacker haga que ese programa ejecute código malicioso. Esto se puede utilizar para robar datos o para obtener acceso no autorizado. Fuzzing se usa para encontrar entradas que pueden causar un desbordamiento de búfer.
Tipos de fuzzing
Las herramientas de fuzzing se pueden clasificar en función de cómo se generan los casos de prueba y cuánto se sabe sobre el sistema.
tonto contra Inteligente
Dumb fuzzing simplemente agrega grandes cantidades de entradas aleatorias. No elige las entradas que tienen más probabilidades de ser aceptadas por la aplicación. Esto facilita la implementación sin saber nada sobre el software; sin embargo, también es altamente ineficiente ya que la mayoría de los insumos serán rechazados.
El fuzzing inteligente genera entradas que es probable que la aplicación acepte. Requiere que el usuario comprenda qué formato de entrada es aceptable y luego genera grandes cantidades de entradas dentro de ese formato. El fuzzing inteligente requiere más esfuerzo y conocimiento del producto para implementarlo, pero es significativamente más eficiente.
mutacional vs. generacional
Los fuzzers mutacionales toman una entrada que fue previamente aceptada y le hacen cambios menores. Esto permite que se generen entradas que probablemente se acepten sin conocer el formato aceptado.
Los fuzzers generacionales crean entradas completamente nuevas basadas en lo que se sabe sobre el formato aceptado.
caja blanca vs. Caja negra
El fuzzing de caja negra se usa sin ninguna información sobre la aplicación que se está probando. Es menos efectivo que el fuzzing de caja blanca, pero se puede aplicar a cualquier aplicación sin acceso al código fuente. Esto lo hace popular entre los piratas informáticos.
El fuzzing de caja blanca utiliza información sobre la aplicación que se está probando para crear entradas que tienen más probabilidades de ser aceptadas y producir vulnerabilidades. Lo utilizan principalmente los desarrolladores de software porque es más efectivo que el fuzzing de caja negra.
Fuzzing es un poderoso método de prueba de software que utilizan los desarrolladores de software, los profesionales de la seguridad y los piratas informáticos. Requiere un esfuerzo mínimo para implementarlo y es capaz de encontrar vulnerabilidades que otras técnicas de prueba de software no detectan.
Es particularmente importante desde el punto de vista de la seguridad porque a menudo se usa para descubrir vulnerabilidades de día cero. Estas vulnerabilidades pueden ser descubiertas y reparadas por profesionales de seguridad, o descubiertas y explotadas por piratas informáticos.