GitHub ha implementado nuevos controles para npm para mejorar la seguridad de la cadena de suministro de software, brindando a los mantenedores la capacidad de aprobar explícitamente una versión antes de que los paquetes estén disponibles públicamente para su instalación.
La función, denominada publicación por etapas, ahora está disponible de forma generalizada en npm. Exige que un mantenedor humano pase un desafío de autenticación de dos factores (2FA) para aprobar un paquete antes de enviarlo a npmjs(.)com.
«En lugar de una publicación directa que inmediatamente pone a disposición de los consumidores una versión del paquete, el tarball prediseñado se carga en una cola de etapa donde un mantenedor debe aprobarlo explícitamente antes de que sea instalable», dijo GitHub.
La subsidiaria propiedad de Microsoft dijo que el cambio garantiza una «prueba de presencia» para cada publicación, incluidas aquellas que provienen de flujos de trabajo CI/CD no interactivos y publicaciones confiables con autenticación OpenID Connect (OIDC).
Antes de utilizar la publicación por etapas, los mantenedores de paquetes deben cumplir los siguientes criterios:
- Tener acceso de publicación al paquete.
- El paquete ya existe en el registro npm, lo que significa que no se puede preparar un paquete nuevo
- 2FA está habilitado para la cuenta
Los desarrolladores pueden utilizar el comando «npm stage Publish» desde el directorio raíz del paquete para enviarlo a un área de preparación. Para utilizar este comando, es esencial actualizar a npm CLI 11.15.0 o posterior. Para una protección óptima, GitHub recomienda que la publicación por etapas se combine con la publicación confiable mediante OIDC.
Una segunda actualización centrada en npm se relaciona con la introducción de tres nuevos indicadores de fuente de instalación junto con el indicador existente -allow-git –
- –allow-file: Controla las instalaciones desde rutas de archivos locales y archivos tar locales
- –allow-remote: controla las instalaciones desde URL remotas, incluidos archivos tar https
- –allow-directory: Controla las instalaciones desde directorios locales
Las banderas permiten a los desarrolladores «aplicar el mismo enfoque de lista permitida explícita a cada fuente de instalación que no sea del registro», dijo GitHub.
El desarrollo se produce en medio de un aumento masivo de ataques a la cadena de suministro de software dirigidos a ecosistemas de código abierto en los últimos meses, con un grupo cibercriminal conocido como TeamPCP involucrado en envenenar paquetes populares a una escala sin precedentes a través de un ciclo de compromisos que se perpetúa a sí mismo.