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.