Fuzz testing, o fuzzing, es una técnica de prueba de software de caja negra que consiste esencialmente en encontrar errores de implementación mediante la inyección de datos defectuosos / semi-defectuosos en una tarea automatizada.
Este análisis es una técnica de prueba de software utilizada por desarrolladores y probadores de penetración para probar sus aplicaciones en busca de registros inesperados, inválidos y aleatorios. Luego, la respuesta se percibe en forma de excepción o de bloqueo provocado por la aplicación. Esta actividad nos muestra algunas de las mayores vulnerabilidades en la aplicación que de otra manera no se podrían descubrir. Estas cubiertas Desbordamientos de búfer, cadenas de formato, inyecciones de código, punteros colgantes, condiciones de carrera, condiciones de denegación de servicioy muchos otros tipos de vulnerabilidades de seguridad.
El análisis difuso es una solución relativamente simple y eficaz que se puede integrar en los procesos de control de calidad y pruebas de seguridad. Por esta razón, el análisis difuso a veces se denomina prueba de robustez o prueba negativa.
La prueba de fuzz clásica fue desarrollada en 1989 en la Universidad de Wisconsin Madison por el profesor Barton Miller y sus estudiantes. Puede encontrar su (más) trabajo aquí. Está orientado principalmente a la confusión de la línea de comandos y la interfaz de usuario y muestra que los sistemas operativos modernos son propensos a la confusión incluso simple.
Normalmente, un fuzzer intenta combinaciones de ataques en:
- Números (enteros con / sin signo / flotantes, etc.).
- chars (urls, entradas de línea de comando).
- Metadatos: texto de entrada del usuario (etiqueta ID3).
- secuencias binarias puras.
Un enfoque común para la fuzzing es crear listas de «valores peligrosos conocidos«(Vectores Fuzz) para cada tipo y para inyectarlos o recombinaciones.
- Para números enteros: Cero, posiblemente negativo o números muy grandes.
- Para personajes: caracteres / declaraciones enmascarados e interpretables (por ejemplo, para consultas SQL, comillas / comandos, etc.).
- Para binario: aleatorio.
- Para personajes: caracteres / declaraciones enmascarados e interpretables (por ejemplo, para consultas SQL, comillas / comandos, etc.).
Varias clases de fuzzer están disponibles en Kali Linux con las que se pueden probar los formatos de archivo, protocolos de red, entradas de línea de comando, variables de entorno y aplicaciones web. Cualquier fuente de entrada de datos que no sea de confianza se considera insegura e inconsistente. Por ejemplo, un límite de confianza entre la aplicación y el usuario de Internet es impredecible. Por lo tanto, todas las entradas de datos deben borrarse y verificarse frente a vulnerabilidades conocidas y desconocidas. En nuestro artículo un poco posterior, aprenderemos más sobre fuzzers en nuestro sistema Kali Linux.
El propósito del fuzzing se basa en la suposición de que hay errores en cada programa esperando ser descubiertos. Entonces, un enfoque sistemático debería encontrarlos tarde o temprano.
Fuzzing puede agregar otra perspectiva a las técnicas clásicas de prueba de software (revisión manual del código, depuración) ya que es un enfoque no humano. No los reemplaza, pero es una adición útil ya que el esfuerzo involucrado en la introducción del procedimiento es limitado.
Referencias
¿Te encantan nuestros artículos? Asegúrate de eso Síganos en Gorjeo y GitHub publicamos actualizaciones de artículos allí. A unirse a nosotros KaliLinuxIn Familia ven a nosotros Grupo de telegramas. Estamos tratando de construir una comunidad para Linux y ciberseguridad. Siempre estamos felices de ayudar a todos en el para todo. como sección. Como sabemos, nuestra sección de comentarios siempre está abierta a todos. Leemos cada comentario y siempre respondemos.