Cyber Security News rapporterer at pnpm 11 lander samtidig som Go-, Rust- og PHP-økosystemene fortsatt rydder opp etter en kampanje som kompromitterte fersk-publiserte pakker på tvers av npm, PyPI og Packagist. Socket.dev har dokumentert at de fleste ondsinnede versjoner blir oppdaget innen timer etter publisering, men skaden er allerede gjort fordi CI-pipelines plukker dem opp i samme øyeblikk de dukker opp.
pnpm 11 introduserer tre defaults som flytter byrden fra opt-in til opt-out:
- Minimum Release Age på 1 440 minutter (24 timer). Nye versjoner resolves ikke før de har eksistert i minst ett døgn. Hotfixes og sikkerhetspatcher kan unntas via
minimumReleaseAgeExclude. - Block Exotic Subdeps slått på via
blockExoticSubdeps. Transitive avhengigheter som resolveres fra Git-repoer eller direkte tarball-URL-er blir blokkert. Topp-nivåpackage.jsonkan fortsatt bruke eksotiske kilder. - Allow Builds-modell som erstatter spredte
onlyBuiltDependenciesogignoredBuiltDependenciesmed ett kart fra pakke-mønster til boolean. Dette retter seg direkte mot lifecycle-skript, som fortsatt er den mest brukte eksekveringsstien i npm-angrep.
Hva bør du gjøre?
- Oppgrader CI-runnere til pnpm 11 og fjern eventuell
--ignore-scripts-løsning du allerede har bygget. Den nyeallowBuilds-modellen er mer presis. - Auditér
pnpm-workspace.yamlforonlyBuiltDependenciesogignoredBuiltDependenciesog migrér dem tilallowBuilds-kartet før neste deploy. - Hvis du har monorepo med Git-baserte avhengigheter, sjekk at de står som direkte avhengigheter i topp-nivå
package.json.blockExoticSubdepsrammer kun transitive.
Bakgrunn
pnpm har lenge profilert seg på diskplass-effektivitet via hardlinks. Versjon 11 er den første utgivelsen der vedlikeholderne åpent prioriterer sikkerhet over installasjonshastighet i defaults. Bun og npm har foreløpig ikke fulgt etter med tilsvarende karantenetid.