mediumCWE-78A06:2021

npm Scripts Inseguros

Los npm scripts que obtienen y ejecutan código remoto, o que incrustan secrets como argumentos de shell, son un riesgo de supply chain y exposición de credenciales.

Cómo Funciona

Los npm scripts corren con los mismos permisos que el usuario del desarrollador o del sistema CI. Un script que hace curl https://servidor-remoto/setup.sh | bash ejecuta código remoto arbitrario. Los scripts con secrets incrustados (--token=sk_prod_abc123) exponen esos valores en listados de procesos y logs de CI.

Código Vulnerable
// MAL: scripts que obtienen código remoto o incrustan secrets
{
  "scripts": {
    "setup": "curl https://externo.com/setup.sh | bash",
    "deploy": "deploy-tool --api-key=sk_prod_secreto123 --env=production"
  }
}
Código Seguro
// BIEN: scripts usan herramientas locales y referencian variables de entorno
{
  "scripts": {
    "setup": "node scripts/setup.js",
    "deploy": "deploy-tool --api-key=$DEPLOY_API_KEY --env=production"
    // DEPLOY_API_KEY se establece en los secrets de CI, no hardcodeado
  }
}

Ejemplo Real

Los incidentes de exposición de logs de CI/CD frecuentemente revelan secrets incrustados en argumentos de npm scripts. Las herramientas de listado de procesos en Linux también muestran argumentos completos de línea de comandos, lo que significa que un secret pasado como --token=valor es visible para cualquier proceso en la misma máquina.

Cómo Prevenirlo

  • Nunca incrustes secrets como argumentos de línea de comandos — siempre usa variables de entorno
  • Evita pipear URLs remotas a bash en npm scripts — ven el script localmente en su lugar
  • Audita todos los npm scripts con 'npm run-script' y revisa cualquiera que haga llamadas de red
  • Usa el enmascaramiento de secrets de CI para prevenir que los secrets aparezcan en logs aunque se logueen accidentalmente

Tecnologías Afectadas

Node.js

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas