GitHub desactiva los scripts de instalación por defecto en npm 12 para frenar amenazas en la cadena de suministro
Introducción
GitHub ha anunciado cambios drásticos en el funcionamiento de npm con el lanzamiento de la versión 12, destacando la desactivación por defecto de los scripts de instalación. Esta decisión responde a la creciente preocupación por las amenazas a la cadena de suministro de software, especialmente aquellas que explotan los mecanismos de ejecución automática de código presentes en los hooks del ciclo de vida de npm. El nuevo enfoque, calificado de “breaking change” por la propia plataforma, implica una transformación significativa en la gestión de dependencias y la ejecución de código en proyectos JavaScript y Node.js.
Contexto del Incidente o Vulnerabilidad
El ecosistema npm, con más de 2 millones de paquetes disponibles y decenas de millones de usuarios, es un objetivo prioritario para los actores maliciosos que buscan comprometer cadenas de suministro de software. En los últimos años, se han documentado numerosos ataques que aprovechan scripts definidos en los hooks como `preinstall`, `install` o `postinstall` para ejecutar código arbitrario durante la instalación de paquetes. Estos scripts suelen utilizarse legítimamente para tareas como la compilación o la configuración, pero también pueden servir para descargar y ejecutar malware, establecer puertas traseras, o exfiltrar credenciales y secretos del entorno de desarrollo.
Detalles Técnicos
La principal modificación introducida en npm 12 es la desactivación por defecto de la ejecución de scripts durante el proceso de instalación (`npm install`). Esta medida afecta a los siguientes hooks del ciclo de vida del paquete: `preinstall`, `install`, `postinstall`, `preuninstall`, `uninstall`, `postuninstall`, entre otros.
Desde el punto de vista de MITRE ATT&CK, los atacantes han empleado técnicas como “Command and Scripting Interpreter” (T1059) y “Supply Chain Compromise” (T1195) para explotar estos scripts. Los Indicadores de Compromiso (IoC) suelen incluir modificaciones sospechosas en el fichero `package.json`, descargas externas mediante comandos `curl` o `wget`, y conexiones a dominios maliciosos durante la fase de instalación.
Entre los exploits conocidos, se han detectado campañas que utilizan tools como Metasploit para desplegar payloads a través de dependencias comprometidas, así como el uso de frameworks como Cobalt Strike para el movimiento lateral una vez obtenida persistencia inicial mediante npm.
Impacto y Riesgos
El riesgo principal derivado de la ejecución automática de scripts reside en la posibilidad de ejecutar código malicioso sin la intervención ni el conocimiento del usuario. En 2023, se reportaron incidentes donde más de 10.000 proyectos se vieron afectados por dependencias maliciosas que exfiltraban tokens de acceso y claves API durante la instalación. El coste medio de un incidente de cadena de suministro en Europa supera los 3,4 millones de euros, según IBM Security.
Las versiones de npm anteriores a la 12 (especialmente las ramas 6.x y 7.x, aún presentes en entornos legacy) son especialmente vulnerables, ya que no implementan restricciones sobre la ejecución de estos hooks.
Medidas de Mitigación y Recomendaciones
La actualización a npm 12 es prioritaria para entornos de desarrollo y producción, especialmente en organizaciones sujetas a la legislación europea (GDPR, NIS2) o que requieran cumplir con estándares como ISO/IEC 27001. Los administradores pueden reactivar la ejecución de scripts añadiendo el flag `–scripts` explícitamente, pero se recomienda auditar exhaustivamente qué scripts se ejecutan y restringir su uso a paquetes de confianza.
Asimismo, se recomienda:
– Implementar revisiones automáticas de los ficheros `package.json` y `package-lock.json`.
– Utilizar soluciones de análisis de composición de software (SCA) para identificar dependencias vulnerables.
– Desplegar entornos de integración continua (CI/CD) con restricciones de red durante la instalación de dependencias.
– Monitorizar tráfico saliente durante instalaciones para detectar posibles exfiltraciones.
– Formar a los desarrolladores sobre buenas prácticas en la gestión de dependencias y la edición de scripts de ciclo de vida.
Opinión de Expertos
Especialistas en ciberseguridad, como Daniel Castaño (CISO en una multinacional tecnológica), subrayan que “el cambio de npm 12 es un paso imprescindible para proteger la cadena de suministro. Aunque puede suponer fricciones en equipos de desarrollo, el riesgo de persistir en el modelo anterior es inasumible en el contexto actual”.
Por su parte, analistas del sector consideran que esta medida puede incentivar a otros gestores de paquetes a revisar sus propios mecanismos de ejecución automática, siguiendo la tendencia iniciada por npm.
Implicaciones para Empresas y Usuarios
Las organizaciones deberán revisar sus pipelines de desarrollo y actualizar documentación interna para reflejar este cambio. Los equipos de DevOps y seguridad deberán coordinarse para identificar posibles dependencias de scripts de instalación y adaptar procesos de despliegue.
Para los usuarios finales, la actualización implica una mayor seguridad en la instalación de paquetes, aunque podría requerir acciones adicionales en proyectos legacy que dependan de scripts personalizados.
Conclusiones
La desactivación por defecto de los scripts de instalación en npm 12 marca un punto de inflexión en la protección de la cadena de suministro de software. Esta medida, alineada con las tendencias regulatorias y las mejores prácticas de seguridad, refuerza la necesidad de mantener una vigilancia proactiva sobre las dependencias y los procesos automatizados en el desarrollo de software moderno.
(Fuente: feeds.feedburner.com)
