Fallo De Hace 15 Años En Python Permite La Ejecución De Código Arbitrario En 350K Proyectos

Una vulnearabilidad en Python que lleva sin parchearse desde hace 15 años vuelve a la luz tras descubrirse que afecta a más de 350.000 repositorios que permitirían ejecutar código arbitrario.

Descubierto en 2007 y etiquetado como CVE-2007-4559, el problema de seguridad nunca recibió un parche, la única mitigación efectuada fue una actualización de la documentación advirtiendo a los desarrolladores sobre el riesgo.

Sin parchear desde 2007

La vulnerabilidad se encuentra en el paquete tarfile de Python, concretamente en el uso de la función tarfile.extract() cuando recibe un input sin sanitizar o con los valores predeterminados de tarfile.extractall(). Se trata de un bug de cruce de rutas que permite a un atacante sobrescribir archivos arbitrariamente.

Los detalles técnicos de CVE-2007-4559 han estado disponibles desde el informe inicial en agosto de 2007. Aunque no exista actualmente ningún informe en el que se haya hecho uso malicioso del bug, representa un riesgo en la cadena de suministro de software.

A principios de este año, mientras se investigaba otro problema de seguridad, un investigador de Trellix redescubrió la vulnerabilidad CVE-2007-4559.

El hecho de no escribir ningún código de seguridad para sanitizar los archivos involucrados antes de llamar a tarfile.extract() o tarfile.extractall() da lugar a una vulnerabilidad de cruce de directorios, lo que permite a un actor malintencionado acceder al sistema de archivos

Charles McFarland, investigador de vulnerabilidades en Trellix

El fallo se debe a que el código de la función extract en el módulo tarfile de Python confía explícitamente en la información del objeto TarInfo y «une la ruta que se pasa a la función extract y el nombre del objeto TarInfo«

CVE-2007-4559 - path joining with filename
CVE-2007-4559 – La ruta uniéndose al nombre del archivo
fuente: Trellix

En menos de una semana después de descubrirse, un mensaje del bugtracker de Python anunciaba que el problema ya había sido parcheado, siendo el «arreglo» un cambio en la documentación que advirtiera de que «puede llegar a ser peligroso extraer archivos de una fuente no fiable»

Se estima que unos 350,000 proyectos se han visto impactados 

Analizando el impacto de la vulnerabilidad, los investigadores de Trellix descubrieron que ésta estaba presente en miles de proyectos de código tanto abierto como cerrado.

Los investigadores hicieron scrapping sobre un set de 257 repositorios que eran subsceptibles de incluir código vulnerable y comprobaron manualmente 175 de estos para ver si estaban afectados, resultando en que el 61% era vulnerable.

Tomando este porcentaje y tras comprobar que 588.540 repositorios tienen la linea «import tarfile» entre su código, se estiman alrededor de 350.000 repositorios vulnerables.

Cómo hacer (mal) uso de CVE-2007-4559

En un artículo publicado por el investigador de vulnerabilidades Kasimir Schulz, que redescubrió el bug, describe sencillamente los pasos a tomar para hacer un uso maligno de esta vulnerabilidad.

Los investigadores muestran cómo la vulnerabilidad puede afectar también a Linux. Consiguieron la escritura de archivos y ejecución de código en un test sobre Polemarch IT.

Además de poner el foco en el riesgo que puede implicar esta vulnerabilidad, Trellix también ha desarrollado parches para más de 11.000 proyectos. Estos parches se pueden encontrar en forks de los repositorios afectados, que pueden ser añadidos posteriormente por medio de pull requests.

Debido al amplio número de repositorios afectados, los investigadores esperan que más de 70.000 proyectos reciban actualizaciones arreglándolo en el plazo de unas pocas semanas. Aún así, conseguir un 100% de parches va a ser una ardua tarea.

Más información:


Via: unaaldia.hispasec.com
Fallo De Hace 15 Años En Python Permite La Ejecución De Código Arbitrario En 350K Proyectos Fallo De Hace 15 Años En Python Permite La Ejecución De Código Arbitrario En 350K Proyectos Reviewed by Zion3R on 3:20 Rating: 5