Skip to content
industry insights

NPM 12 Pone Fin a la Scriptpocalypse

Durante años, un simple `npm install` podía desatar ataques a la cadena de suministro en su máquina. NPM 12 finalmente cierra esa puerta al deshabilitar la ejecución automática de scripts por defecto.

Cassidy Wolfe
NPM 12 Pone Fin a la Scriptpocalypse

El Fin de la Ejecución de Código sin Restricciones

npm 12 finalmente cierra la puerta al salvaje oeste de la instalación de paquetes, poniendo fin a una era peligrosa donde npm install funcionaba como un libre para todos silencioso para la ejecución de código. Durante años, los scripts pre-install y post-install, junto con sus contrapartes install, se ejecutaban automáticamente para cada dependencia, transformando una tarea rutinaria en el vector principal para insidiosos ataques a la cadena de suministro. Este comportamiento predeterminado convirtió una simple descarga de paquete en una apuesta de alto riesgo.

Un modelo de confianza implícita sustentaba todo el ecosistema JavaScript, permitiendo que cualquier paquete ejecutara código arbitrario durante la instalación sin el consentimiento explícito del usuario. Los atacantes explotaron magistralmente este punto ciego. El gusano Shai-Hulud de auto-propagación, por ejemplo, comprometió cientos de paquetes para exfiltrar credenciales y propagarse de forma autónoma, mientras que su variante "Mini Shai-Hulud" de mayo de 2026 tuvo como objetivo proyectos prominentes como TanStack explotando GitHub Actions.

La comunidad debatió esta vulnerabilidad crítica durante años, atrapada entre las urgentes necesidades de seguridad y el inmenso desafío de mantener la compatibilidad con versiones anteriores en un ecosistema vasto y dependiente de scripts. Ahora, npm 12 corta este nudo gordiano. Deshabilita la ejecución automática de scripts por defecto, forzando un flujo de aprobación explícito a través de npm approve-scripts. Este cambio largamente esperado de la confianza implícita a la lista blanca explícita finalmente prioriza la seguridad, marcando el comienzo de un futuro más seguro, aunque ligeramente menos conveniente.

Su Nuevo Guardián: npm approve-scripts

npm install en la versión 12 ya no ejecuta ciegamente código arbitrario de sus dependencias. Los días de los scripts pre-install, install y post-install ejecutándose por defecto han terminado definitivamente, poniendo fin a un vector crítico para ataques a la cadena de suministro como Shai-Hulud y los recientes compromisos de TanStack. Este bloqueo general se extiende incluso a las compilaciones nativas esenciales de node-gyp y a los scripts prepare obtenidos de dependencias de Git, archivo o enlace, neutralizando eficazmente cualquier ejecución de código inesperada antes de que comience.

Presentamos npm approve-scripts, su nuevo guardián. Este comando introduce un flujo de trabajo explícito y auditable, que permite a los desarrolladores revisar cada script y habilitar selectivamente solo aquellos en los que realmente confían. Una vez aprobados, npm almacena estos permisos directamente dentro de su archivo package.json, creando un registro transparente y con control de versiones del código permitido que se ejecuta durante la instalación. Esto reemplaza la peligrosa automatización anterior con un consentimiento deliberado e informado.

Esto no es simplemente un nuevo comando; es un cambio filosófico profundo para todo el ecosistema JavaScript. npm se mueve decisivamente de un modelo de confianza implícita – donde cualquier dependencia podía ejecutar cualquier cosa – a uno de lista blanca explícita. Los desarrolladores recuperan el control absoluto y granular sobre qué código se ejecuta precisamente en sus máquinas, transformando npm install de una posible responsabilidad en una operación deliberada y segura. La scriptpocalypse no termina con un gemido, sino con un "No" firme y auditable.

Asegurando Más Vectores de Ataque

Si bien los scripts pre-install y post-install fueron los vectores más llamativos para los ataques a la cadena de suministro, los adversarios astutos nunca pusieron todos sus huevos en la misma canasta. También aprovecharon vías menos obvias, como las Git dependencies directas y los tarballs de URL remotos, para introducir código malicioso en proyectos desprevenidos. Los atacantes explotaron famosamente estos métodos en incidentes como la variante Mini Shai-Hulud que atacó paquetes bajo el espacio de nombres TanStack, a menudo inyectando archivos .npmrc maliciosos a través de estas rutas indirectas.

npm 12 cierra estas puertas secundarias con un mandato simple y explícito. Los desarrolladores ahora deben usar --allow-git para resolver las dependencias basadas en Git y --allow-remote al instalar paquetes desde tarballs basados en URL. Esto no es solo un inconveniente; es un punto de fricción crítico diseñado para forzar decisiones conscientes, eliminando la confianza implícita en fuentes externas y reduciendo significativamente la superficie de ataque.

Nadie podrá alegar ignorancia cuando npm 12 se lance en julio; las advertencias sobre estos breaking changes han estado activas desde npm v11.16.0+. Este período de gracia ofrece una amplia oportunidad para que los equipos auditen sus pipelines de compilación y actualicen las declaraciones de dependencia, evitando interrupciones repentinas. Para obtener más detalles sobre los próximos cambios, consulte el Upcoming breaking changes for npm v12 - GitHub Changelog.

¿Te está gustando? Recibe uno así en tu bandeja cada mañana.

un correo al día · date de baja en dos clics · sin rastreadores de terceros

¿Un Paso Necesario, Pero Es Suficiente?

Finalmente, npm reconoce la realidad. La ejecución de scripts sin restricciones, un vector principal para los ataques a la cadena de suministro, termina con npm 12 después de años de explotación generalizada. Este cambio largamente esperado hacia la aprobación explícita de scripts, que finalmente se pone al día con alternativas más conscientes de la seguridad, transforma npm install de un ejercicio de confianza ingenuo en una operación vigilada. Es una evolución necesaria, aunque llega en julio de 2026, años después de que sonaran las primeras alarmas.

Incluso con estos cambios bienvenidos, la batalla por la integridad de la cadena de suministro continúa. Muchos expertos en seguridad, incluido yo mismo, simplemente abogamos por pnpm, que cuenta con valores predeterminados superiores como el bloqueo de subdependencias exóticas y el retraso en la adopción de nuevos paquetes. La postura proactiva de pnpm, que durante mucho tiempo ha defendido una postura más restrictiva y segura de forma predeterminada, ofrece una alternativa convincente para proyectos que exigen protección inmediata y robusta.

Estas actualizaciones reducen significativamente la superficie de ataque, limitando los vectores de scripts pre-install y post-install que impulsaron incidentes como Shai-Hulud y el compromiso de TanStack. El bloqueo explícito de las Git dependencies y los tarballs remotos cierra aún más las rutas de ataque conocidas. Sin embargo, los atacantes son implacablemente adaptables. Espere un giro hacia otras vulnerabilidades, quizás explotando archivos .npmrc maliciosos, configuraciones erróneas de CI/CD o ingeniería social sofisticada. La vigilancia del desarrollador, escudriñando cada dependencia y proceso de compilación, sigue siendo el cortafuegos definitivo e indispensable en este panorama de amenazas en evolución.

Preguntas Frecuentes

¿Cuál es el cambio más grande en NPM 12?

El cambio más significativo es que npm install ya no ejecutará automáticamente los scripts pre-install, install o post-install para las dependencias. Los usuarios ahora deben aprobarlos explícitamente.

¿Cómo ejecuto scripts para dependencias de confianza en NPM 12?

Debe usar el nuevo comando npm approve-scripts. Esto le pedirá que apruebe los scripts de sus dependencias, y sus selecciones se guardarán en su package.json.

¿Por qué NPM está haciendo estos cambios de seguridad ahora?

Estos cambios son una respuesta directa a una ola de sofisticados supply chain attacks, como el gusano Shai-Hulud, que explotaron la automatic script execution para robar credenciales y propagar malware.

¿Otros package managers como PNPM o Yarn ya son así de seguros?

Sí, otros package managers como PNPM y Yarn ya han implementado comportamientos similares de security-by-default behaviors, como el bloqueo de automatic install scripts, desde hace algún tiempo.

Found this useful? Share it.

For builders

Want Stork to write one of these about your product?

Send us a URL. We use the product, form a view, and publish what we actually think — in 8 languages, labeled Sponsored, with no copy approval on your side. That last part is what makes it worth quoting.

See how it works$500 · AI tools & software only