Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en una protección de enlaces simbólicos en el paquete npm "tar" (CVE-2021-32803)

Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-59 Incorrecta resolución de una ruta antes de aceder a un fichero (Seguimiento de enlaces)
Fecha de publicación:
03/08/2021
Última modificación:
02/07/2022

Descripción

El paquete npm "tar" (también se conoce como node-tar) versiones anteriores a 6.1.2, 5.0.7, 4.4.15 y 3.2.3 presenta una vulnerabilidad de Creación y Sobrescritura de archivos arbitraria por medio de una protección insuficiente de enlaces simbólicos. El objetivo de "node-tar" es garantizar que no se extraiga ningún archivo cuya ubicación pueda ser modificada por un enlace simbólico. Esto se consigue, en parte, al asegurar que los directorios extraídos no sean enlaces simbólicos. Adicionalmente, para evitar llamadas innecesarias a "stat" para determinar si una ruta dada es un directorio, las rutas se almacenan en caché cuando los directorios son creados. Esta lógica era insuficiente cuando se extraían archivos tar que contenían tanto un directorio como un enlace simbólico con el mismo nombre que el directorio. Este orden de operaciones resultaba que el directorio fuera creado y se añadiera a la caché de directorios del "nodo-tar". Cuando un directorio está presente en la caché de directorios, las siguientes llamadas a mkdir para ese directorio se saltan. Sin embargo, aquí es también donde "node-tar" comprueba que los enlaces simbólicos ocurran. Al crear primero un directorio, y luego reemplazando ese directorio con un enlace simbólico, era posible así omitir las comprobaciones de enlaces simbólicos de "node-tar" en los directorios, permitiendo esencialmente que un archivo tar no confiable se enlazara simbólicamente en una ubicación arbitraria y que subsecuentemente se extrajeran archivos arbitrarios en esa ubicación, permitiendo así la creación y sobrescritura de archivos arbitraria. Este problema se solucionó en las versiones 3.2.3, 4.4.15, 5.0.7 y 6.1.2

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:a:tar_project:tar:*:*:*:*:*:node.js:*:* 3.2.3 (excluyendo)
cpe:2.3:a:tar_project:tar:*:*:*:*:*:node.js:*:* 4.0.0 (incluyendo) 4.4.15 (excluyendo)
cpe:2.3:a:tar_project:tar:*:*:*:*:*:node.js:*:* 5.0.0 (incluyendo) 5.0.7 (excluyendo)
cpe:2.3:a:tar_project:tar:*:*:*:*:*:node.js:*:* 6.0.0 (incluyendo) 6.1.2 (excluyendo)
cpe:2.3:a:oracle:graalvm:20.3.3:*:*:*:enterprise:*:*:*
cpe:2.3:a:oracle:graalvm:21.2.0:*:*:*:enterprise:*:*:*
cpe:2.3:a:siemens:sinec_infrastructure_network_services:*:*:*:*:*:*:*:* 1.0.1.1 (excluyendo)