Vulnerabilidad en Cargo (CVE-2022-36113)
Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-22
Limitación incorrecta de nombre de ruta a un directorio restringido (Path Traversal)
Fecha de publicación:
14/09/2022
Última modificación:
14/08/2023
Descripción
Cargo es un administrador de paquetes para el lenguaje de programación rust. Después de descargar un paquete, Cargo extrae su código fuente en la carpeta ~/.cargo del disco, poniéndolo a disposición de los proyectos Rust que construye. Para registrar cuando una extracción es exitosa, Cargo escribe "ok" en el archivo .cargo-ok en el root del código fuente extraído una vez que extrajo todos los archivos. Se ha detectado que Cargo permitía que los paquetes contuvieran un enlace simbólico .cargo-ok, que Cargo extraía. Entonces, cuando Cargo intentaba escribir "ok" en .cargo-ok, en realidad sustituía los dos primeros bytes del archivo al que apuntaba el enlace simbólico por ok. Esto permitiría a un atacante corromper un archivo en la máquina que usa Cargo para extraer el paquete. Tenga en cuenta que, por diseño, Cargo permite una ejecución de código en tiempo de compilación, debido a los scripts de compilación y las macros de procedimiento. Las vulnerabilidades de este aviso permiten llevar a cabo un subconjunto de los posibles daños de una forma más difícil de rastrear. Tus dependencias deben seguir siendo confiables si quieres estar protegido de los ataques, ya que es posible llevar a cabo los mismos ataques con scripts de construcción y macros de procedimiento. La vulnerabilidad está presente en todas las versiones de Cargo. Rust versión 1.64, será publicada el 22 de septiembre, incluirá una corrección para la misma. Dado que la vulnerabilidad es sólo una forma más limitada de lograr lo que pueden hacer los scripts de construcción o las macros de procedimiento maliciosos, hemos decidido no publicar versiones puntuales de Rust que incluyan la corrección de seguridad. Los archivos de parche están disponibles para Rust versión 1.63.0 en el repositorio wg-security-response para las personas que construyen su propia cadena de herramientas. Mitigación Recomendamos a usuarios de registros alternativos que tengan cuidado con el paquete que descargan, incluyendo sólo dependencias confiables en sus proyectos. Tenga en cuenta que incluso con estas vulnerabilidades corregidas, Cargo permite por diseño la ejecución de código arbitrario en tiempo de compilación gracias a los scripts de compilación y a las macros de procedimiento: una dependencia maliciosa podrá causar daños independientemente de estas vulnerabilidades. crates.io implementó comprobaciones del lado del servidor para rechazar este tipo de paquetes hace años, y no se presentan paquetes en crates.io que exploten estas vulnerabilidades
Impacto
Puntuación base 3.x
8.10
Gravedad 3.x
ALTA
Productos y versiones vulnerables
| CPE | Desde | Hasta |
|---|---|---|
| cpe:2.3:a:rust-lang:cargo:*:*:*:*:*:rust:*:* | 0.65.0 (excluyendo) |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página



