
Los investigadores de ciberseguridad han detallado una falla de alta gravedad que afecta a la popular biblioteca async-tar Rust y sus bifurcaciones, incluida tokio-tar. Esta falla podría permitir la ejecución remota de código bajo ciertas 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. Esta vulnerabilidad afecta a varios proyectos ampliamente utilizados, incluidos testcontainers y wasmCloud.
«En el peor de los casos, esta vulnerabilidad tiene una clasificación de gravedad de 8,1 (alta) y podría conducir a la ejecución remota de código (RCE) a través de ataques de sobrescritura de archivos, como el reemplazo de archivos de configuración o el secuestro de backend», dijo la firma de seguridad con sede en Seattle.

El problema se complica aún más 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 de forma asincrónica archivos TAR creados en el lenguaje de programación en tiempo de ejecución Tokio. La caja Rust se actualizó por última vez el 15 de julio de 2023.
A falta de un parche para tokio-tar, se recomienda a los usuarios de esta biblioteca que migren a astral-tokio-tar; se lanzó la versión 0.5.6 para corregir un defecto.
«Las versiones de astral-tokio-tar anteriores a la 0.5.6 contienen una vulnerabilidad de análisis de límites que permite a un atacante explotar el manejo inconsistente de los encabezados PAX/ustar para contrabandear entradas de archivo adicionales», dijo el desarrollador de Astral, William Woodruff, en una advertencia.
«Al procesar un archivo que contiene un encabezado de extensión PAX con una anulación de tamaño, el analizador avanza incorrectamente la posición de la secuencia según el tamaño del encabezado ustar (a menudo cero) en lugar del tamaño especificado por PAX, interpretando el contenido del archivo como un encabezado TAR legítimo».
Este problema es simplemente el resultado del manejo inconsistente de los encabezados de extensión PAX y los encabezados ustar al determinar los límites de los datos del archivo. PAX significa Portable Archive Interchange y es una versión mejorada del formato USTAR utilizado para almacenar propiedades de archivos miembros en archivos TAR.
Una falta de coincidencia entre el encabezado de extensión PAX y el encabezado ustar, donde el encabezado PAX especifica el tamaño del archivo correctamente, pero el encabezado ustar especifica incorrectamente el tamaño del archivo como cero (en lugar del tamaño PAX), provoca una falta de coincidencia en el análisis que hace que la biblioteca interprete el contenido interno como entradas de archivo externo adicionales.
«Avanzar 0 bytes evita que el analizador omita los datos del archivo real (el archivo TAR anidado) e inmediatamente encuentra el siguiente encabezado TAR válido al comienzo del archivo anidado», explicó Edera. «El encabezado del archivo interno se interpreta incorrectamente como una entrada legítima que pertenece al archivo externo».

Como resultado, un atacante podría aprovechar este comportamiento para «contrabandear» archivos adicionales cuando la biblioteca procesa archivos TAR anidados, sobrescribiendo así archivos en el directorio de extracción, lo que podría allanar el camino para la ejecución de código arbitrario.
En un escenario de ataque hipotético, 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 contenga algo malicioso que secuestra el backend de compilación y sobrescribe los archivos reales durante la instalación.
«Las garantías de Rust hacen que sea mucho más difícil introducir errores de seguridad de la memoria (como desbordamientos del búfer y uso después de la liberación), pero no eliminan los errores lógicos. Y esta discrepancia en el análisis es fundamentalmente una falla lógica», dijo Edera. «Los desarrolladores deben permanecer atentos a todas las clases de vulnerabilidades, independientemente del lenguaje utilizado».
Source link
