Los investigadores de ciberseguridad han revelado detalles de una falla de alta gravedad que afecta a la popular biblioteca async-tar Rust y sus bifurcaciones, incluida tokio-tar, y que podría provocar la ejecución remota de código en determinadas condiciones.
La vulnerabilidad, rastreada como CVE-2025-62518 (puntuación CVSS: 8.1), recibió el nombre en código TarmaGeddon de Edera, que descubrió el problema a finales de agosto de 2025. Afecta a varios proyectos muy utilizados, como testcontainers y WASMcloud.
«En el peor de los casos, esta vulnerabilidad tiene una gravedad de 8.1 (alta) y puede provocar la ejecución remota de código (RCE) mediante ataques de sobrescritura de archivos, como reemplazar archivos de configuración o secuestrar backends de compilación», dijo la empresa de seguridad con sede en Seattle dijo .
El problema se agrava por el hecho de que tokio-tar es esencialmente abandonware a pesar de atraer miles de descargas a través de crates.io. Tokio-tar es una biblioteca de Rust para leer y escribir archivos TAR de forma asincrónica construida sobre Tiempo de ejecución de Tokio para el lenguaje de programación. La caja Rust estaba última actualización el 15 de julio de 2023.
En ausencia de un parche para tokio-tar, se recomienda a los usuarios que confíen en la biblioteca que migren a astral-tokio-tar, que ha publicado versión 0.5.6 para subsanar la falla.
«Las versiones de astral-tokio-tar anteriores a la 0.5.6 contienen una vulnerabilidad de análisis de límites que permite a los atacantes pasar de contrabando entradas de archivo adicionales mediante la explotación de datos inconsistentes Cabecera PAX/USTar manejo», William Woodruff, desarrollador de Astral dijo en una alerta.
«Al procesar archivos con encabezados extendidos por PAX que contienen anulaciones de tamaño, el analizador avanza incorrectamente la posición de la transmisión en función del tamaño del encabezado de ustar (a menudo cero) en lugar del tamaño especificado por PAX, lo que hace que interprete el contenido del archivo como encabezados TAR legítimos».
El problema, en pocas palabras, es el resultado de un manejo inconsistente al manejar los encabezados extendidos de PAX y los encabezados ustar al determinar los límites de los datos de los archivos. PAX, abreviatura de portable archive interchange, es una versión extendida del formato USTAR que se utiliza para propiedades de la tienda de los archivos de los miembros en un archivo TAR.
La falta de coincidencia entre los encabezados extendidos de PAX y los encabezados ustar (en los que el encabezado PAX especifica correctamente el tamaño del archivo, mientras que el encabezado ustar especifica incorrectamente el tamaño del archivo como cero (en lugar del tamaño de PAX), provoca una incoherencia en el análisis, lo que hace que la biblioteca interprete el contenido interno como entradas de archivo externas adicionales.
«Al avanzar 0 bytes, el analizador no puede omitir los datos reales del archivo (que es un archivo TAR anidado) e inmediatamente encuentra el siguiente encabezado TAR válido ubicado al principio del archivo anidado», explica Edera. «Luego interpreta incorrectamente los encabezados del archivo interno como entradas legítimas que pertenecen al archivo externo».
Como resultado, un atacante podría aprovechar este comportamiento para «contrabandear» archivos adicionales cuando la biblioteca procesa archivos TAR anidados, lo que permitiría sobrescribir archivos dentro de los directorios de extracción y, en última instancia, allanar el camino para la ejecución de código arbitrario.
En un escenario hipotético de ataque, un atacante podría cargar un paquete especialmente diseñado en PyPI de modo que el TAR externo contenga un pyproject.toml legítimo, mientras que el TAR interno oculto contiene uno malintencionado que secuestra el backend de compilación y sobrescribe el archivo real durante la instalación.
«Si bien las garantías de Rust dificultan considerablemente la introducción de errores de seguridad en la memoria (como el desbordamiento del búfer o el uso posterior a la liberación), no eliminan los errores de lógica, y esta incoherencia en el análisis es fundamentalmente un defecto lógico», afirma Edera. «Los desarrolladores deben permanecer atentos a todo tipo de vulnerabilidades, independientemente del lenguaje utilizado».