❤️ Adquiere tu membresía:  Contenidos protegidos, manuales y videos >> Ver Más

Vulnerabilidad sin parches de Python afecta a más de 350,000 proyectos

Una vulnerabilidad en el lenguaje de programación Python que ha pasado desapercibida durante 15 años ahora vuelve a ser el centro de atención. Esta vulnerabilidad probablemente afecta a más de 350,000 repositorios de código abierto y puede conducir a la ejecución de código.

Revelada en 2007 y etiquetada como CVE-2007-4559, el problema de seguridad nunca recibió un parche. Además, la única mitigación proporcionada fue una actualización de la documentación que advertía a los desarrolladores sobre el riesgo.

Sin parchear desde 2007

La vulnerabilidad se encuentra en el  paquete tarfile de Python, específicamente, en el código que utiliza la  función tarfile.extract() que no valida los valores predeterminados integrados de tarfile.extractall(). Es una vulnerabilidad de salto de directorio que permite a un atacante sobrescribir archivos arbitrarios.

Los detalles técnicos de CVE-2007-4559 han estado disponibles desde el  informe inicial  en agosto de 2007. Si bien no hay informes sobre el aprovechamiento del error en los ataques, representa un riesgo en la cadena de suministro de software.

A principios de este año, mientras investigaba otro problema de seguridad, un investigador de Trellix redescubrió CVE-2007-4559. Trellix es una nueva empresa que brinda soluciones de detección y respuesta extendidas (XDR) que resultó de la  fusión  de McAfee Enterprise y FireEye.

“Si no se escribe ningún código de seguridad para validar los archivos de los miembros antes de llamar a tarfile.extract() tarfile.extractall(), se genera una vulnerabilidad de salto de directorios, lo que permite que un actor malintencionado acceda al sistema de archivos”. 

Charles McFarland, investigador de vulnerabilidades en el Equipo de investigación de amenazas avanzadas de Trellix

La vulnerabilidad se deriva del hecho de que el código en 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 en el objeto TarInfo“.

CVE-2007-4559: Ruta que se une con el nombre del archivo

En pocas palabras, un atacante puede explotar la vulnerabilidad al cargar un archivo tar malicioso de una manera que hace posible escapar del directorio en el que se pretende extraer un archivo y lograr la ejecución del código. Esto le permite al adversario potencialmente tomar el control de un dispositivo de destino.

Menos de una semana después de la divulgación, un  mensaje en Python bug tracker  anunció que el problema estaba solucionado. La solución fue actualizar la documentación con una advertencia “que podría ser peligroso extraer archivos de fuentes no confiables. 

Estimación de 350,000 proyectos afectados 

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

Los investigadores escanearon un conjunto de 257 repositorios con mayor probabilidad de incluir el código vulnerable y verificaron manualmente 175 de ellos para ver si estaban afectados. Esto reveló que el 61% de ellos eran vulnerables.

La ejecución de una verificación automatizada en el resto de los repositorios aumentó la cantidad de proyectos afectados al 65 %. Esto  indica un problema generalizado.

Sin embargo, el pequeño conjunto de muestras solo sirvió como referencia para obtener una estimación de todos los repositorios afectados disponibles en GitHub.

“Con la ayuda de GitHub, pudimos obtener un conjunto de datos mucho más grande para incluir 588,840 repositorios únicos que incluyen ‘import tarfile’ en su código Python”.

Charles McFarland

Usando la tasa de vulnerabilidad del 61 % verificada manualmente, Trellix estima que hay más de 350,000 repositorios vulnerables. Lo peor es que muchos están siendo utilizados por herramientas de aprendizaje automático (por ejemplo, GitHub Copilot) que ayudan a los desarrolladores a completar un proyecto más rápido.

Estas herramientas automatizadas se basan en el código de cientos de miles de repositorios para proporcionar opciones de “completado automático”. Si proporcionan un código inseguro, el problema se propaga a otros proyectos sin que el desarrollador lo sepa.

GitHub Copilot sugiere la extracción del código vulnerable de tarfile 

Al profundizar en el problema, Trellix descubrió que el código de fuente abierta vulnerable a CVE-2007-4559 “abarca una gran cantidad de industrias”.

Como era de esperar, el más afectado es el sector del desarrollo, seguido por la tecnología web y de aprendizaje automático.

Código vulnerable a CVE-2007-4559 presente en todas las industrias

Explotando CVE-2007-4559

En una publicación técnica, el investigador de vulnerabilidades de Trellix, Kasimir Schulz, quien redescubrió el error, describió los pasos simples para explotar CVE-2007-4559 en la versión de Windows de Spyder IDE. Spyder IDE es un entorno de desarrollo integrado multiplataforma de código abierto para programación científica. 

Los investigadores demostraron que la vulnerabilidad también se puede aprovechar en Linux. Lograron escalar la escritura de archivos y lograr la ejecución del código en una prueba en el servicio de administración de infraestructura informática de Polemarch.

Además de llamar la atención sobre la vulnerabilidad y el riesgo que representa, Trellix también creó parches para poco más de 11,000 proyectos. Las correcciones estarán disponibles en una bifurcación del repositorio afectado. Más tarde, se agregarán al proyecto principal a través de solicitudes de actualización.

Debido a la gran cantidad de repositorios afectados, los investigadores esperan que más de 70,000 proyectos reciban una solución en las próximas semanas. Sin embargo, alcanzar la marca del 100% es un desafío difícil, ya que los mantenedores también deben aceptar las solicitudes de fusión.

Si no se controla, esta vulnerabilidad que se ha agregado involuntariamente a cientos de miles de proyectos de código abierto y cerrado en todo el mundo, creará una superficie de ataque sustancial en la cadena de suministro de software. 

Nos comunicamos con Python Software Foundation para obtener comentarios sobre CVE-2007-4559, pero no recibimos una respuesta hasta el momento de la publicación.

Deja un comentario

Adquiere tu Membresía Anual Wiser

Adquiere tu Membresía Anual Wiser y adquiere grandes beneficios

Más información