retire.js: detectando dependencias JavaScript vulnerables

retire.js · Apache-2.0

retire.js identifica bibliotecas JavaScript con vulnerabilidades conocidas. Fingerprintea versiones de biblioteca a partir del contenido de archivos y URLs, luego las compara contra una base de vulnerabilidades. Es una de las pocas comprobaciones que funciona igual de bien desde fuera — no necesitas el repositorio de código, solo el bundle que el sitio sirve.

Instalación

npm install -g retire

Comandos principales

# un directorio de proyecto
retire --path ./frontend

# solo JavaScript, ignora node_modules
retire --path ./frontend --js --ignore node_modules

# JSON para importar
retire --path ./frontend --outputformat json --outputpath retire.json

# umbral de severidad
retire --path ./frontend --severity high

Para escaneo remoto, descarga los bundles primero y escanea el directorio — la extensión de navegador cubre comprobaciones puntuales pero no se automatiza bien.

Salida

{"file":"static/jquery-1.8.3.min.js","results":[{"component":"jquery","version":"1.8.3",
 "vulnerabilities":[{"severity":"medium","identifiers":{"CVE":["CVE-2015-9251"]},
 "info":["https://github.com/jquery/jquery/issues/2432"]}]}]}

Dónde encaja en Tandera

retire.js se ejecuta en la fase de analyze de recon_web_lite y recon_web_full, contra los assets JavaScript recuperados durante el crawl. Como no necesita payloads activos, está permitido en el flujo lite NonIntrusive.

Sus identificadores de CVE mapean al catálogo de findings, así que una biblioteca vulnerable se convierte en un finding con CVE, una puntuación CVSS y contexto EPSS en lugar de una cadena bruta de versión.

Uso en un pentest

Los findings basados en versión necesitan contexto de explotabilidad o son ruido. “jQuery 1.8.3 tiene CVE-2015-9251” es cierto y casi inútil por sí solo. El cliente necesita saber si el camino de código vulnerable es alcanzable en esta aplicación. Compruébalo antes de asignar una severidad.

Comprueba la CDN, no solo el bundle. Las aplicaciones frecuentemente cargan un framework moderno localmente y una biblioteca utilitaria antigua desde una CDN. La copia de la CDN es la que nadie rastrea.

Prefiere la versión al CVE en la remediación. “Actualiza jQuery a 3.5.0 o superior” es accionable. Una lista de identificadores de CVE es una tarea de investigación que le estás devolviendo al cliente.

acceso anticipado

Consigue Tandera antes de tu próximo engagement.

Únete a la waitlist para acceso anticipado. Estamos incorporando equipos de pentest por oleadas.

Onboarding prioritario para equipos de pentest.
Línea directa con quienes lo construyen.
Precio de acceso anticipado, asegurado.

Sin spam, sin tarjeta. Cancela cuando quieras.

enespt-br