npm 12 Schakelt standaard installatiescripts uit om het risico op toeleveringsketens te verminderen

GitHub heeft officieel de release aangekondigd van npm versie 12, waarbij installatiescripts standaard zijn uitgeschakeld, samen met het afschaffen van granular access tokens (GAT’s) die zijn ontworpen om tweefactorauthenticatie (2FA) te omzeilen.

De dochteronderneming van Microsoft merkte op dat het volgende npm-installatiegedrag dat voorheen automatisch werd uitgevoerd, opt-in is gemaakt:

  • allowScripts is standaard uitgeschakeld, wat betekent dat scripts voor de afhankelijkheidslevenscyclus (dwz preinstall, install, postinstall) en impliciete node-gyp-builds niet langer worden uitgevoerd, tenzij dit expliciet wordt toegestaan.
  • –allow-git is standaard ingesteld op geen, wat betekent dat –allow-git standaard is ingesteld op geen: Git-afhankelijkheden (direct of transitief) worden niet langer opgelost, tenzij expliciet toegestaan.
  • –allow-remote is standaard ingesteld op none, wat betekent dat afhankelijkheden van externe URL’s (bijvoorbeeld https-tarballs) niet langer worden opgelost, tenzij dit expliciet wordt toegestaan.

Om vertrouwde scripts te beoordelen en goed te keuren, moeten gebruikers nu het volgende uitvoeren: “npm Approved-scripts –allow-scripts-pending”, en vervolgens de resulterende toelatingslijst vastleggen in het bestand “package.json”.

Het is de moeite waard om op te merken dat er vorige maand een preview van deze wijzigingen werd getoond, waarbij GitHub ontwikkelaars aanbeveelde om te upgraden naar npm 11.16.0 of nieuwer, het normale installatiecommando uit te voeren en de weergegeven waarschuwingen te bekijken.

De nieuwste npm-releaseversie introduceert ook twee nieuwe wijzigingen:

  • npm GAT’s die zijn geconfigureerd om 2FA te omzeilen, kunnen niet langer gevoelige account-, pakket- en organisatiebeheeracties uitvoeren. Dit omvat het aanmaken of verwijderen van tokens, het genereren van herstelcodes en het wijzigen van het npm-accountwachtwoord, e-mailadres, profiel of 2FA-configuratie, het wijzigen van pakkettoegang, beheerders of vertrouwde publicatieconfiguratie, en het beheren van organisatie- en teamlidmaatschappen, evenals hun pakketsubsidies.
  • npm GAT’s behouden niet langer de mogelijkheid om rechtstreeks te publiceren. Hun publicatieoppervlak zal beperkt zijn tot het lezen van privépakketten en het organiseren van een publicatie, waarbij een pakket pas openbaar wordt na een menselijke 2FA-goedkeuring.

De eerste van twee wijzigingen zullen naar verwachting begin augustus 2026 van kracht worden. In de tussentijd wordt geadviseerd om te stoppen met het gebruik van 2FA-bypass-tokens voor de bovengenoemde bewerkingen en deze interactief uit te voeren met 2FA. De tweede wijziging staat gepland voor januari 2027.

“Ter voorbereiding kun je het beste plannen om geautomatiseerd publiceren te verplaatsen naar Trusted Publishing (OIDC) of gefaseerd publiceren met een menselijke goedkeuringsstap, in plaats van een publicatietoken met een lange levensduur”, aldus GitHub.

De ontwikkeling komt op het moment dat pnpm 11.10 een nieuwe “_auth”-instelling introduceert voor het configureren van registerverificatie als een enkele gestructureerde, URL-gecodeerde waarde.

“Het veiligheidsvoordeel is dat de referentie en de host waartoe het behoort samen reizen, en pnpm leest _auth alleen uit de omgeving of de globale configuratie, nooit uit de bestanden van een project”, legt Socket uit.

“Dat betekent dat een kwaadaardige of gecompromitteerde pnpm-workspace.yaml of .npmrc in een repository geen geldig token naar een andere host kan verwijzen. Een gemanipuleerd projectbestand is een gebruikelijke manier waarop aanvallers voet aan de grond krijgen, en het omleiden van een registertoken is een directe route om het te stelen, dus het sluiten van dat pad verwijdert de blootstelling.”

Thijs Van der Does