La acostumbrada libertad de los autores se estrelló contra estrictas normas de seguridad.

Cada día en npm aparecen miles de nuevos paquetes de código, y hasta hace poco estaban disponibles para instalar casi inmediatamente después de su publicación — ahora, antes de eso serán revisados por si contienen malware. La plataforma npm, perteneciente a GitHub, anunció el lanzamiento de un escaneo automático de paquetes en el momento de la publicación e introdujo un nuevo requisito de metadatos para paquetes de "doble uso".
Por paquetes de este tipo se entiende el código que tiene una aplicación legítima en el ámbito de la seguridad, pero cuyo comportamiento se asemeja al de software malicioso. Son, por ejemplo, herramientas para pruebas de penetración, escáneres de vulnerabilidades o programas que imitan las acciones de atacantes para verificar la protección de sistemas. Los sistemas automáticos a menudo confunden ese código con malware real, por lo que npm decidió separar esos paquetes en una categoría con reglas especiales de publicación.
Según el cambio, cada paquete nuevo ahora se somete a una comprobación antes de estar disponible para instalar. Según los resultados del escaneo, el paquete se publica como de costumbre, se envía a una revisión manual o se bloquea por completo. Esto añade una demora entre la publicación y la aparición del paquete en el registro: normalmente alrededor de cinco minutos, pero en periodos de carga máxima o para paquetes grandes la espera puede extenderse hasta 15 minutos o más. Los desarrolladores cuyos scripts esperan la disponibilidad inmediata del paquete tras la publicación deben tener en cuenta esta demora.
Si un paquete queda bloqueado, el autor recibe una notificación con la posibilidad de presentar una apelación. Dependiendo de la gravedad y veracidad de la amenaza detectada, a la cuenta del autor se le pueden aplicar medidas adicionales de conformidad con la política vigente de npm.
Un asunto separado son los paquetes con funcionalidad legítima pero potencialmente peligrosa, por ejemplo herramientas para pruebas de penetración o análisis de seguridad. Los sistemas automáticos con frecuencia confunden ese código con malware. Para esos casos, npm introdujo un nuevo campo contentPolicy en el archivo package.json, así como un archivo de texto obligatorio DISCLOSURE, donde el autor debe describir el propósito y el uso legítimo de su código. Esa información la utiliza el equipo de confianza y seguridad de npm durante la revisión manual; no obstante, tal declaración por sí sola no garantiza la publicación del paquete.
Publicar paquetes con declarado doble uso solo está permitido mediante métodos que aseguren la autenticación de dos factores —por ejemplo, mediante una publicación confiable por el protocolo OIDC, una sesión interactiva con autenticación de dos factores (2FA) o una publicación por etapas. No se pueden usar tokens de acceso que permitan eludir la comprobación de dos factores para la publicación directa de esos paquetes. Además, tras la primera declaración de doble uso no se podrá eliminar el campo contentPolicy ni el archivo DISCLOSURE en versiones posteriores del paquete; esas publicaciones serán rechazadas.
Las nuevas reglas se implementan de forma gradual. A los autores de paquetes con doble uso que aún no han añadido los metadatos necesarios, npm ya les está enviando notificaciones por correo electrónico para que sus paquetes no queden bloqueados automáticamente. Los desarrolladores que distribuyen a través de npm código con elementos de análisis de seguridad deberían preparar de antemano la descripción para el archivo DISCLOSURE y pasar a publicar mediante métodos con autenticación de dos factores obligatoria.