Una vulnerabilidad en las bibliotecas de Rust para el formato TAR provoca la descompresión de archivos de un archivo anidado.

Se ha descubierto una vulnerabilidad (CVE-2025-62518, nombre en clave TARmageddon) en la biblioteca async-tar, escrita en Rust, que proporciona funciones para leer y escribir archivos tar. Esta vulnerabilidad permite descomprimir un archivo tar especialmente diseñado para extraer no solo los archivos que contiene, sino también los archivos contenidos en archivos tar anidados. Esta vulnerabilidad puede explotarse para eludir los sistemas de verificación de archivos y descomprimir archivos no verificados.

La vulnerabilidad también afecta a bifurcaciones de la biblioteca async-tar, como tokio-tar, krata-tokio-tar y astral-tokio-tar, así como a utilidades basadas en ellas, como el gestor de paquetes uv, que se está desarrollando como un sustituto de alto rendimiento de pip para proyectos Python. Entre los proyectos populares que utilizan bibliotecas vulnerables se incluyen el kit de herramientas testcontainers para ejecutar contenedores Docker y el entorno de ejecución de WebAssembly de wasmCloud. En el repositorio crates.is, durante los últimos 90 días, la biblioteca async-tar ha registrado 1.3 millones de descargas, tokio-tar 2.2 millones y testcontainers 2.9 millones.

La vulnerabilidad se debe a una selección incorrecta de la posición al analizar diferentes valores de tamaño en los encabezados ustar y PAX. En los archivos tar con formato PAX, cada archivo contiene dos encabezados: el encabezado ustar clásico y el encabezado PAX extendido. El problema se debe a que las bibliotecas vulnerables utilizan el encabezado ustar heredado al descomprimir archivos, en lugar de calcular el desplazamiento según el tamaño del encabezado PAX extendido. Si el encabezado ustar contenía un valor de tamaño cero, el contenido del archivo siguiente se procesaba como un bloque válido de encabezados TAR para el siguiente archivo.

 Una vulnerabilidad en las bibliotecas de Rust para el formato TAR provoca la descompresión de archivos de un archivo anidado.
 Una vulnerabilidad en las bibliotecas de Rust para el formato TAR provoca la descompresión de archivos de un archivo anidado.

Para ejecutar el ataque, simplemente cree un archivo TAR con una cabecera USTAR de tamaño cero y el tamaño real en la cabecera PAX. Esto hará que el contenido del archivo que contiene el otro archivo TAR se procese como parte del archivo principal. El código de ejemplo para crear estos archivos está disponible en GitHub. La vulnerabilidad se corrigió en tokio-tar 0.5.6 y uv 0.9.5. Aún no se han publicado correcciones para otras bibliotecas, pero se han preparado parches independientes para astral-tokio-tar, async-tar y krata-tokio-tar.

La vulnerabilidad de la biblioteca tiene una gravedad de 8.1 sobre 10, ya que puede explotarse para sobrescribir archivos descomprimidos (las implementaciones vulnerables descomprimirán archivos distintos a los visibles en el archivo). Sin embargo, la vulnerabilidad en el gestor de paquetes uv se considera benigna, ya que si un atacante puede influir en el contenido del archivo original, no tiene sentido complicar el ataque y explotar la vulnerabilidad mediante un archivo anidado cuando la ejecución de código puede lograrse mediante scripts de compilación en el archivo principal.

Los investigadores que descubrieron la vulnerabilidad propusieron varios escenarios hipotéticos de ataque que podrían eludir las comprobaciones de seguridad y ejecutar código reemplazando archivos de configuración o interfiriendo en el proceso de compilación. Se supone que el archivo enviado superaría el análisis de seguridad automatizado y la auditoría manual, durante la cual el auditor pasaría por alto un archivo incrustado extraño que contenía otros archivos. Posteriormente, al descomprimirlo con bibliotecas de Rust, el archivo mostraría un contenido diferente al esperado.

Por ejemplo, un atacante podría subir un archivo modificado al repositorio de PyPI, que se verificaría con el contenido del archivo principal que contiene el archivo legítimo pyproject.toml. Al procesar este paquete con la utilidad uv, el archivo legítimo pyproject.toml se reemplazaría con una versión maliciosa del subarchivo, que contiene comandos que se ejecutarían durante la compilación en el equipo del desarrollador o en un sistema de integración continua. De igual forma, los archivos contenedor podrían sobrescribirse al extraer la imagen del contenedor con la herramienta testcontainers.

Fuente: opennet.ru

Compre alojamiento confiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra alojamiento web fiable con protección DDoS, servidores VPS VDS | ProHoster