A lo largo de dieciséis semanas de seguimiento de lanzamientos en el ecosistema de gestores de paquetes, tres ejes marcan la evolución del sector: el endurecimiento defensivo por defecto, la incorporación de controles en los registros y la persistencia de tres familias de vulnerabilidades recurrentes. La cuarentena de versiones (release-age cooldown) ha pasado de ser una novedad a convertirse en práctica habitual: Deno 2.8, Bundler, npm, Yarn, mise, Hex, Mamba y Cargo, mediante la bandera -Zmin-publish-age, han incorporado plazos mínimos antes de aceptar una dependencia, y Dependabot la activó como predeterminada sin condiciones en agosto con un umbral de tres días. Varias herramientas, incluidas Dependabot, Renovate y Hex, añadieron además excepciones para permitir la actualización cuando se publica un aviso de seguridad.
En paralelo, el bloqueo de scripts de instalación se generaliza. npm 12 los desactiva por defecto, Bun 1.4 restringe la confianza automática a paquetes del registro npm y pnpm extendió su lista allowBuilds a dependencias alojadas en repositorios Git. También se refuerzan los controles de origen en Composer 2.10, que desactiva la caída de dist a source ante fallos de descarga. Las verificaciones de malware en instalación y publicación aterrizaron en Composer 2.10 mediante una fuente de Aikido, en uv mediante una variable de entorno y un ajuste de configuración, y en el registro npm, que ahora escanea en el momento de publicar y puede adjuntar un veredicto contentPolicy. Cinco herramientas incorporaron o ampliaron un comando de auditoría propio: Deno, uv, Homebrew, Bun y Hex.
La separación entre configuración del proyecto y confianza a nivel de máquina se consolidó en pnpm y mise, que dejaron de permitir que ficheros como .npmrc redirijan credenciales, expandan variables de entorno o reubiquen estado global. uv 0.12 obliga a usar --require-hashes y rechaza fuentes solo MD5. Los registros también apretaron sus controles: npm aplica publicación escalonada y restricciones a tokens de bypass de 2FA, Packagist introdujo versiones inmutables y un registro de transparencia, PyPI rechaza nuevos ficheros en publicaciones con más de catorce días, NuGet recortó la vida de las claves API de 365 a 30 días y AUR desactivó la adopción de paquetes huérfanos tras dos incidentes de apropiación. Fuera del bloque de seguridad, maduraron las funciones de espacios de trabajo y monorepo en PDM, Conan, pixi, Hatch, uv y mise, y la reescritura en Rust de pnpm 12 alcanzó estable.
En el capítulo de vulnerabilidades, dos patrones se repitieron durante catorce de las dieciséis semanas: errores de Path traversal en la extracción de archivos o durante la instalación, en herramientas como uv, pnpm, RubyGems, Podman, Composer, Guix, opam, ORAS, Docker, Flatpak y Poetry, y credenciales enviadas al host equivocado o filtradas en registros, con casos relevantes en Cargo 1.96, Dependabot, ORAS 1.3.4, Composer 2.10.3 y Renovate.
