Blog

Comprende el error de recorrido de directorio en el módulo tarfile de Python

October 3, 2022
Laura Verheyde
Primer plano de una serpiente verde enroscada y descansando sobre la rama oscura de un árbol con un fondo negro.

Recientemente, un equipo de investigadores de seguridad anunció el hallazgo de un error de hace quince años en la funcionalidad de extracción de archivos tar de Python. La vulnerabilidad se reveló por primera vez en 2007 y se registró como CVE-2007-4559. Se añadió una nota a la documentación oficial de Python, pero el error en sí quedó sin corregir.

Esta vulnerabilidad podría afectar a miles de proyectos de software, sin embargo, muchas personas no están familiarizadas con la situación o cómo manejarla. Por eso, aquí en Secure Code Warrior, te damos la oportunidad de simular la explotación de esta vulnerabilidad tú mismo para ver el impacto de primera mano y obtener experiencia práctica en la mecánica de este error persistente, ¡para que puedas proteger mejor tu aplicación!

Prueba la Misión simulada ahora.

La vulnerabilidad: recorrido de rutas durante la extracción de archivos tar

El recorrido de rutas o directorios ocurre cuando se utiliza una entrada de usuario no saneada para construir una ruta de archivo, lo que permite a un atacante obtener acceso a archivos, sobrescribirlos e incluso ejecutar código arbitrario.

La vulnerabilidad existe en el módulo tarfile de Python. Un archivo tar (tape archive) es un archivo único, llamado archivo comprimido. Empaqueta varios archivos junto con sus metadatos y suele reconocerse por tener la extensión .tar.gz o .tgz. Cada miembro del archivo puede representarse mediante un objeto TarInfo, que contiene metadatos como el nombre del archivo, la fecha de modificación, la propiedad y más.

El riesgo surge de la capacidad de los archivos para ser extraídos nuevamente.

Al extraerse, cada miembro necesita una ruta donde ser escrito. Esta ubicación se crea uniendo la ruta base con el nombre del archivo:

Fragmento de Tarfile.py


Una vez creada esta ruta, se pasa a las funciones tarfile.extract o tarfile.extractall para realizar la extracción:

Python code defining extractall method that processes members and directories, copying and setting modes.
Fragmento de Tarfile.py

El problema aquí es la falta de saneamiento del nombre del archivo. Un atacante podría renombrar archivos para incluir caracteres de recorrido de ruta, como punto punto barra (../), lo que provocaría que el archivo saliera del directorio en el que debía estar y sobrescribiera archivos arbitrarios. Esto podría llevar finalmente a la ejecución remota de código, lo cual es ideal para la explotación.

La vulnerabilidad aparece en otros escenarios, si sabes cómo identificarla. Además del manejo de archivos tar en Python, la vulnerabilidad existe en la extracción de archivos zip. Es posible que la conozcas con otro nombre, como la vulnerabilidad zip slip, ¡que se ha manifestado en otros lenguajes además de Python!

ENLACE A LA MISIÓN

¿Cómo puedes mitigar el riesgo?

A pesar de que la vulnerabilidad se conoce desde hace años, los mantenedores de Python consideran que la funcionalidad de extracción hace lo que se supone que debe hacer. En este caso, algunos podrían decir que "es una característica, no un error". Desafortunadamente, los desarrolladores no siempre pueden evitar extraer archivos tar o zip de una fuente desconocida. Depende de ellos sanear la entrada no confiable para prevenir vulnerabilidades de recorrido de rutas como parte de las prácticas de desarrollo seguro.

¿Quieres aprender más sobre cómo escribir código seguro y mitigar riesgos con Python?

Prueba nuestro desafío de Python gratis.

Si te interesa obtener más guías de programación gratuitas, consulta Secure Code Coach para mantenerte al día con las prácticas de codificación segura.

‍

‍

Eslogan

Controle el desarrollo impulsado por IA antes de su lanzamiento

Mida el riesgo asistido por IA, aplique políticas de codificación segura en el momento de la confirmación y acelere la entrega segura en todo su ciclo de vida de desarrollo de software (SDLC).

Reservar una demostración
Biblioteca de recursos

Explorar más blogs

Acceda a contenido especializado sobre programación segura, gobernanza de IA y gestión de riesgos de software.

ver todo
Caso de estudio
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Una cultura de seguridad: cómo Sage creó su programa de defensores

Descubre cómo Sage reforzó su seguridad con un enfoque flexible y centrado en las relaciones, logrando formar a más de 200 expertos en seguridad y alcanzar una reducción de riesgos cuantificable.

Más información
Icono de ventana de navegador con las letras KVK en negrita y dos líneas horizontales azules debajo sobre un fondo azul degradado.
Caso de estudio
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Kamer van Koophandel: Seguridad a escala impulsada por los desarrolladores

La Cámara de Comercio (Kamer van Koophandel) comparte cómo integró la programación segura en el desarrollo diario mediante certificaciones basadas en roles, evaluaciones comparativas de puntuación de confianza y una cultura de responsabilidad compartida en seguridad.

Más información
Logotipo de Insurance Australia Group con texto y un icono en azul y gris dentro del diseño de una ventana de navegador web.
Caso de estudio
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Cómo un «Juego de Códigos» guía a IAG Group hacia un futuro de programación más seguro

IAG Group es la entidad detrás de muchas de las principales compañías de seguros en la región de Asia-Pacífico, que suscribe pólizas para millones de clientes por un valor aproximado de 11.400 millones de dólares australianos en primas anuales.

Más información
Blog
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Mes de la Concienciación sobre Ciberseguridad 2026: Comprender la seguridad de la IA es fundamental para la defensa empresarial

Hemos llegado a un punto en el que la mayoría de las principales empresas de IA han pedido públicamente una ralentización global en el desarrollo de la IA para que las medidas de seguridad puedan ponerse al día, pero la verdad es que ya se han materializado graves problemas de seguridad. Esto deja a innumerables líderes de seguridad y equipos ejecutivos en una situación urgente, a medida que los costes monetarios y de riesgo de la implementación de la IA siguen acumulándose.

Más información
Blog
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Habilitador 8: Branding de su programa

Un programa de codificación segura necesita algo más que un buen contenido para tener éxito. El Habilitador 8 muestra cómo el branding transforma la participación en una experiencia codiciada basada en el estatus.

Más información
Blog
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Cada empleado está ahora en la primera línea de la ciberseguridad de la IA

El panorama tecnológico empresarial está cambiando a una velocidad que pocos previeron hasta que fue demasiado tarde. Hemos cruzado oficialmente el umbral del código escrito por humanos y la asistencia básica de copilotos hacia la era del Ciclo de Vida de Desarrollo Agéntico (ADLC). Si bien los agentes de IA autónomos prometen una eficiencia sin precedentes en múltiples funciones, también traen consigo una clase completamente nueva de riesgos regulatorios y de seguridad.

Más información

Proteja el desarrollo basado en IA antes de su lanzamiento

Identifique riesgos de desarrollo, aplique políticas y prevenga vulnerabilidades en todo el ciclo de vida de su software.

Reservar una demostración
No se encontraron elementos.