GitHub lanza npm 12 con importantes mejoras de seguridad

Iniciado por Dragora, Julio 09, 2026, 07:50:56 PM

Tema anterior - Siguiente tema

0 Miembros y 4 Visitantes están viendo este tema.


GitHub ha anunciado oficialmente el lanzamiento de npm 12, una actualización que introduce algunos de los cambios de seguridad más importantes en la historia del gestor de paquetes de JavaScript. La nueva versión desactiva por defecto la ejecución automática de scripts de instalación, endurece el uso de dependencias externas y elimina gradualmente los tokens de acceso granular (Granular Access Tokens o GAT) utilizados para eludir la autenticación de dos factores (2FA).

Estas modificaciones forman parte de una estrategia más amplia para reforzar la seguridad de la cadena de suministro de software (Software Supply Chain Security), uno de los principales objetivos de los ciberdelincuentes durante los últimos años. Ataques contra repositorios, paquetes maliciosos, dependencias comprometidas y robo de credenciales han convertido a ecosistemas como npm en objetivos prioritarios para actores de amenazas que buscan comprometer miles de proyectos mediante una única vulnerabilidad.

Con npm 12, GitHub pretende reducir significativamente la superficie de ataque, obligando a que determinadas acciones críticas requieran aprobación explícita por parte de los desarrolladores y limitando el uso de credenciales automatizadas de larga duración.

npm 12 desactiva por defecto los scripts de instalación

Uno de los cambios más relevantes de npm 12 es que los scripts del ciclo de vida de las dependencias dejan de ejecutarse automáticamente.

Hasta ahora, cuando un desarrollador instalaba un paquete mediante npm install, podían ejecutarse de forma automática scripts como:

  • preinstall
  • install
  • postinstall

Además, también podían iniciarse compilaciones implícitas utilizando node-gyp, una herramienta ampliamente utilizada para compilar módulos nativos de Node.js.

Aunque esta funcionalidad ha sido esencial para muchos proyectos, también ha sido aprovechada por atacantes para ejecutar código malicioso durante el proceso de instalación sin que el usuario lo advirtiera.

A partir de npm 12, la opción allowScripts permanecerá deshabilitada por defecto, lo que significa que ningún script perteneciente a las dependencias será ejecutado automáticamente salvo que el desarrollador lo autorice de manera explícita.

Esta medida representa un importante avance frente a campañas de malware que durante años han utilizado paquetes aparentemente legítimos para ejecutar código malicioso durante la instalación.

Restricciones para dependencias Git y recursos remotos

La actualización también endurece el tratamiento de las dependencias obtenidas desde fuentes externas.

GitHub confirmó que ahora:

  • --allow-git estará deshabilitado por defecto.
  • --allow-remote también permanecerá desactivado.

En la práctica esto implica que npm ya no resolverá automáticamente dependencias provenientes de:

  • Repositorios Git.
  • Dependencias transitivas alojadas en Git.
  • Archivos TAR distribuidos mediante HTTPS.
  • Recursos remotos externos.

Los desarrolladores deberán autorizar explícitamente este tipo de recursos antes de utilizarlos.

Este cambio busca reducir uno de los principales vectores utilizados en ataques contra la cadena de suministro, donde los ciberdelincuentes sustituyen dependencias legítimas por repositorios comprometidos o servidores bajo su control.

Aprobación manual de scripts confiables

GitHub también ha incorporado un nuevo mecanismo para aprobar scripts considerados seguros.

Ahora será necesario ejecutar el siguiente comando:

npm approve-scripts --allow-scripts-pending

Tras revisar las dependencias autorizadas, la lista de permisos deberá almacenarse dentro del archivo package.json, permitiendo que el proyecto mantenga un registro claro de qué scripts han sido aprobados.

Este enfoque introduce un modelo de confianza explícita, reduciendo considerablemente el riesgo de ejecutar código inesperado durante futuras instalaciones.

GitHub ya había anticipado estos cambios

Las nuevas funciones no llegan completamente por sorpresa.

Durante el mes anterior, GitHub publicó una versión preliminar en la que recomendó a los desarrolladores actualizar a npm 11.16.0 o versiones posteriores para identificar posibles incompatibilidades.

La compañía sugirió ejecutar las instalaciones habituales y revisar cuidadosamente las advertencias generadas antes de migrar definitivamente a npm 12.

Gracias a esta fase de transición, muchas organizaciones podrán adaptar sus procesos CI/CD y automatizaciones antes de que los nuevos mecanismos sean obligatorios.

Fin del uso de tokens que evitan la autenticación 2FA

Otro cambio de enorme relevancia afecta a los Granular Access Tokens (GAT) configurados para evitar la autenticación de dos factores.

Hasta ahora algunos procesos automatizados utilizaban estos tokens para realizar operaciones administrativas sin requerir la validación mediante 2FA.

GitHub eliminará progresivamente esta posibilidad.

Una vez implementada la primera fase, prevista para agosto de 2026, estos tokens ya no podrán ejecutar operaciones sensibles como:

  • Crear o eliminar tokens.
  • Cambiar contraseñas.
  • Modificar el correo electrónico de la cuenta.
  • Administrar la configuración de autenticación multifactor.
  • Generar códigos de recuperación.
  • Cambiar permisos sobre paquetes.
  • Gestionar mantenedores.
  • Configurar publicaciones confiables.
  • Administrar organizaciones y equipos.

Con esta decisión, GitHub busca impedir que unas credenciales robadas permitan modificar aspectos críticos de una cuenta npm sin intervención del usuario.

Los tokens dejarán de publicar paquetes automáticamente

GitHub también confirmó un segundo cambio aún más importante que entrará en vigor en enero de 2027.

Los tokens GAT dejarán de poder publicar paquetes directamente en npm.

Su capacidad quedará limitada a:

  • Leer paquetes privados.
  • Preparar publicaciones.
  • Esperar una aprobación humana protegida mediante autenticación de dos factores.

En otras palabras, incluso si un atacante roba un token válido, no podrá publicar automáticamente un paquete malicioso utilizando esa credencial.

Esta medida dificulta enormemente uno de los escenarios más frecuentes en los ataques a la cadena de suministro: el secuestro de cuentas de mantenedores para distribuir versiones comprometidas de paquetes ampliamente utilizados.

GitHub recomienda migrar hacia OIDC

Como alternativa a los tokens tradicionales, GitHub recomienda adoptar mecanismos modernos de autenticación basados en OpenID Connect (OIDC).

La publicación confiable mediante OIDC permite que los sistemas de integración continua generen credenciales temporales para cada ejecución, evitando almacenar secretos permanentes dentro de los repositorios.

La compañía también aconseja implementar procesos de publicación escalonada que requieran aprobación humana antes de que un paquete sea distribuido públicamente.

Este modelo reduce significativamente el riesgo asociado a credenciales comprometidas.

pnpm también introduce mejoras de seguridad

Las novedades llegan al mismo tiempo que pnpm 11.10, otro popular gestor de paquetes para JavaScript, incorpora nuevas medidas destinadas a proteger las credenciales utilizadas para acceder a registros privados.

La nueva configuración denominada _auth permite almacenar la autenticación como un único valor estructurado asociado directamente con la URL del registro.

Según explicaron investigadores de Socket, esta modificación ofrece una ventaja importante desde el punto de vista de la seguridad.

Ahora las credenciales únicamente podrán obtenerse desde:

  • Variables de entorno.
  • Configuración global del sistema.

En cambio, ya no podrán leerse desde archivos pertenecientes al proyecto como:

  • .npmrc
  • pnpm-workspace.yaml

Esto evita que un repositorio comprometido redirija automáticamente un token válido hacia un servidor controlado por atacantes.

La seguridad de la cadena de suministro entra en una nueva etapa

El lanzamiento de npm 12 refleja el cambio de paradigma que vive actualmente el desarrollo de software. Durante años, la prioridad fue ofrecer rapidez y flexibilidad a los desarrolladores; sin embargo, el aumento de los ataques dirigidos contra la cadena de suministro ha obligado a los principales proveedores de herramientas a reforzar sus mecanismos de protección.

La desactivación de los scripts automáticos, la limitación de dependencias externas, la eliminación de los tokens capaces de eludir la autenticación multifactor y el impulso hacia modelos de publicación basados en OIDC representan un avance significativo para reducir el riesgo de comprometer proyectos mediante paquetes maliciosos o credenciales robadas.

Para desarrolladores, empresas y responsables de DevSecOps, la adopción de estas nuevas prácticas será clave para fortalecer la seguridad de sus aplicaciones y minimizar la exposición frente a una de las amenazas más críticas del ecosistema moderno de desarrollo de software.

Fuente: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login