Google anunció recientemente el código abierto de un nuevo motor de prueba difusa de Python. El nuevo fuzzer, Atheris, se esfuerza por encontrar errores en el código Python y extensiones nativas en las versiones 2.7 y 3.3+. Atheris se puede usar en combinación con las herramientas Address Sanitizer y Undefined Behavior Sanitizer que detectan errores de corrupción de memoria y comportamiento indefinido (por ejemplo, desbordamientos de búfer, punteros desalineados o nulos).
Google explicó el valor que Atheris busca agregar al espacio actual de motores de prueba difusos. La prueba de fuzz es una técnica bien conocida para descubrir errores de programación. Muchos de estos errores detectables tienen serias implicaciones de seguridad. Google ha encontrado miles de vulnerabilidades de seguridad y otros errores al utilizar esta técnica. Fuzzing se usa tradicionalmente en lenguajes nativos como C o C ++, pero recientemente crearon un nuevo motor de fuzzing Python.
Por esa razón y muchas otras más no menos importantes, es que te recomendamos este curso de python profesional, el cual lo imparten de manera presencial o en linea, con instructores expertos en este lenguaje de programación.
Atheris se puede usar en código Python y extensiones nativas escritas para CPython. Cuando se difumina el código nativo, Atheris se puede usar en combinación con el desinfectante de direcciones o el desinfectante de comportamiento indefinido de Clang para detectar errores adicionales.
En ciertas funciones, por ejemplo TestOneInput, Atheris llamará repetidamente a la función bajo prueba con entradas generadas automáticamente hasta que ocurra una falla o una excepción. La función admite una entrada (datos) que es un contenedor de bytes. Atheris proporciona un FuzzedDataProvider que admite fuzzing con formas de entrada adicionales (por ejemplo, cadena, lista, enteros, flotantes, intervalos). Atheris se puede usar con la herramienta de prueba basada en propiedades Hypothesis para escribir arneses de fuzz y reducir una entrada que causa un mal funcionamiento a un caso de falla reproducible más pequeño. Hypothesis además proporciona estrategias avanzadas de generación de entrada (por ejemplo, correo electrónico, diccionarios, fechas, expresiones regulares) que complementan el proveedor de datos difusos de Atheris. Todos esto gracias a la versatilidad de los desarrollos de Python.
Por otro lado, Atheris es un motor de fuzzing guiado por cobertura (caja gris). Aprovecha libFuzzer de Clang para instrumentar el código bajo prueba y recopilar información de cobertura. Luego intenta dinámicamente generar entradas que aumentan la cobertura de código generada por secuencias de entrada anteriores.
Si bien Atheris se encarga de la generación y ejecución de la prueba, es responsabilidad del programador de Python reconocer los comportamientos erróneos de la función bajo prueba. Esto se puede lograr mediante el uso de oráculos de referencias cruzadas (fuzzing diferencial). En este método, al igual que con los métodos de prueba metamórficos más genéricos, dos implementaciones de las mismas especificaciones se ejecutan en la misma entrada y las diferencias en los resultados se seleccionan para el análisis.
Si un oráculo de prueba difusa de Python o una propiedad metamórfica no está disponible, los programadores aún pueden usar fuzzing para detectar fallas. Este es el caso cuando la función bajo prueba genera excepciones inesperadas o falla un mecanismo de detección de fallas.
Esto nos ayuda a ver la utilidad de Python, incluso para grandes empresas informáticas, como Google.
Diseño Web Grupo Codesi