Guía para desarrolladores de Fuzz Testing

  • Gestión de apps

teclado

Las pruebas fuzz siguen creciendo en popularidad entre los desarrolladores de la comunidad de código abierto.

El equipo de seguridad de código abierto (OSS) de Google informó recientemente de que había encontrado más de 40.000 errores en 650 proyectos de código abierto mediante el uso de fuzz testing. Pero si no tienes ni idea de lo que es el fuzz testing (todavía), no te preocupes. Has llegado al lugar adecuado.

¿Qué es el fuzz testing?

El fuzz testing es un método de prueba dinámico para encontrar errores y problemas de seguridad en el software. Durante una prueba fuzz, un programa o una función bajo prueba se ejecuta con entradas no válidas, inesperadas o aleatorias para descubrir casos improbables o inesperados. 

Valor del fuzzing para DevSecOps 

Como sabemos, DevSecOps amplía los enfoques de DevOps y Agile añadiendo métodos de pruebas de seguridad adecuados junto a cada fase del ciclo de vida de desarrollo de software (SDLC), creando un proceso de pruebas dinámico y continuo. 

Parte de ese proceso de pruebas puede y debe incluir el fuzzing para detectar problemas de seguridad y estabilidad en todas las fases del SDLC y permitir a los desarrolladores enviar el software de forma rápida y segura. Por ejemplo, para evitar que las regresiones salgan a la luz, hay que ejecutar pruebas fuzz automatizadas en cada cambio de código.

Especialmente en la industria de la automoción y en los complejos proyectos embebidos, en los que se procesan muchos datos complicados y no fiables, el fuzzing aporta excelentes beneficios a DevSecOps. De hecho, los desarrolladores pueden aplicar el fuzzing de forma similar a las pruebas unitarias para probar automáticamente sus módulos críticos de seguridad en busca de posibles vulnerabilidades. Pero con el fuzzing a nivel de integración, también pueden cubrir todos los casos límite complicados y peligrosos que pueden ocurrir en la interacción entre diferentes módulos. 

Beneficios del fuzz testing

El fuzzing de código genera miles de casos de prueba automatizados en un segundo, y el fuzzer recibe información detallada sobre la cobertura del código y los estados del programa alcanzados para simular la interacción de los diferentes módulos durante la ejecución del código fuente. El fuzzer puede adaptar y silenciar sus entradas basándose en la retroalimentación en tiempo de ejecución en las siguientes iteraciones para maximizar la cobertura del código. Algunas de las ventajas son

(Casi) no hay falsos positivos: Si encuentra un fallo, el fuzzing le proporciona el origen del error y la entrada maliciosa que causó el problema. Así, puede estar seguro de que cada hallazgo es una vulnerabilidad real.

Depuración de hallazgos reproducibles: Las herramientas modernas de fuzz testing le proporcionarán la entrada que causó el problema, incluyendo el origen del error. Con esto, ya tienes mucha información útil para reproducir el error y cargarlo directamente en el depurador. 

Encuentra problemas en casos límite olvidados: Debido a que el fuzzing ejecuta un programa con una entrada no válida o aleatoria, también descubre errores de casos de borde improbables e inesperados que no habrían sido revelados de otra manera.

Descubre la innovación

Para asegurar el éxito empresarial, ahora y a futuro, es imprescindible maximizar el retorno de la inversión existente en software, a la vez que innovar y adoptar nuevas tecnologías. Los retos que hay abordar para competir en un mundo de IT Híbrida incluyen diferentes vías de actuación: la gestión de aplicaciones, la gestión de las operaciones de IT (ITSM), la modernización de aplicaciones y la ciberseguridad inteligente. Puedes obtener más información sobre cómo abortar estos retos e innovar haciendo clic en cada una de las líneas de acción o visitando el sitio web de Micro Focus en este enlace.