tutoriales de programación | grupocodesi.com

Herramienta de prueba difusa de Python de código abierto de Google Atheris

Herramienta de prueba difusa de Python de código abierto de Google Atheris

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 y python

Atheris y python

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.

necesitas una pagina web

Atheris y pruebas de ejecución

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.

Articulos Relacionados a la tecnología Java

Seguridad de Java Java para Android Applets Java Juegos en Java Web Services Java Servidor Java Java 8 Fundamentos de Java 8 Java 3D Curso de Java

Articulos Relacionados a la tecnología Python

Algunas diferencias entre Java y Python Introducción a los lenguajes de programación: Python Fundamentos de la comunidad de desarrolladores de Python Algunas ventajas y desventajas de Python Python o Java, cuál debes elegir Arreglos en Python Clases en Python Importancia de Python Python para Android Pydroid 3 Tutorial Entorno Virtual en Python Fundamentos de Python Caracteristicas de Python Compatibilidad de python con versiones anteriores Importancia de escribir codigo limpio en python Probar Aplicaciones de Python en nevegadores Python para Proyecto de la NASA Funciones dañinas de un malware escritas en Python Recuperar archivos cifrados por un malware escrito en Python Ofuscar codigo escrito en Python Ejecutar aplicacion en python Compiladores de Python Actualización de Visual Studio Code para Python de septiembre de 2020 Python 3.8.6 ahora está disponible en Python Insider Secuencias de comandos de Python en Azure Cloud Shell El lenguaje de programación Python Optimiacion en Python Instalación de múltiples versiones de Python Mypy: escritura estática opcional para Python IDE, integraciones de Linter de Mypy para Python Extension Mypy para python Propósito y pautas de PEP de Python Flujo de trabajo PEP para Python Enviar un PEP para mejorar Python revisar un PEP en Python Bienvenido a Python 3 Cambiar a Python 3 Prueba Difusa de Python Trabajado con Python Investigación empresarial y python Librerias en tu desarrollo python Las mejores bibliotecas python Desarrollador de python habilidades de desarrollador de Python redes neuronales artificiales de Python Lenguaje de programacion python para proyectos Librerias de python a pandas

Diseño Web Grupo Codesi