package-lock.json - JS uzamčení balíčku - npm překlepy

Překlep v souboru Package-Lock.json: Jak může unést vaši sestavu

Proč je Package-Lock.JSON důležitý pro vývojáře

V projektech Node.js není package-lock.json jen doprovodným souborem k package.json. Zamyká přesné verze každé nainstalované závislosti, včetně vnořených. Tento soubor zajišťuje reprodukovatelnost napříč prostředími a zabraňuje neočekávaným změnám při publikování nových verzí balíčků. Bez něj by vývojáři riskovali odlišné chování ve fázích vývoje, testování a produkce v důsledku posunu stromů závislostí a dokonce by otevřeli dveře k překlepům v npm, pokud by se do lockfile dostaly chyby.


Při správném použití zajišťuje package-lock.json všem členům vašeho týmu a vašim CI/CD pipeline INSTALACÍ stejný kód. Ale jeden tichý překlep v tomto souboru může vaši aplikaci přesměrovat rovnou do pasti.

Jak překlepy vedou k útokům typu NPM?

Řekněme, že legitimní balíček v balíček.json je napsáno správně, např. lodashAle chybně napsaný záznam v balíček-lock.json, Jako lody, se stále může vplížit do vašeho stromu závislostí, zvláště pokud jej někdo ručně upravil nebo jej napsal vadný nástroj.

Útočníci využívají tyto překlepy technikou zvanou npm typosquatting. Nahrávají škodlivé balíčky s názvy připomínajícími populární balíčky (např. reagovat-domm, expresy, úhlové). Pokud váš JSON soubor se zámkem balíčku obsahuje takovou překlep, npm nainstaluje balíček útočníka bez otázek, protože jste mu to výslovně řekli.

Typosquatting v NPM není jen teoretický. Reálné útoky typusquattingu v NPM se dostaly na titulní stránky novin. Jedním z takových příkladů byl Kompromisní balíček Coa, Kde škodlivý kód byl dodán prostřednictvím aktualizace důvěryhodného balíčku. Rozdíl je v tom, že při překlepech v npm vývojář omylem pozve útočníka tím, že překlepne závislost.

Skutečná rizika v CI/CD PipelineChyby způsobené JSON uzamčením balíčku

moderní CI/CD pipelinepochoutka balíček-lock.json jako zdroj pravdy. Během sestavení nebo nasazení pipeline běží npm ci or npm install, přičemž oba čtou ze souboru lockfile. Pokud se vyskytne překlep, škodlivý balíček se automaticky stáhne. Žádná upozornění. Žádné výzvy.

To znamená, že překlep způsobený během lokálního vývoje se může nenápadně šířit až do testovacího nebo dokonce produkčního prostředí. Útočníci mohou do systému vložit nástroje pro krádeže přihlašovacích údajů, těžaře kryptoměn nebo zadní vrátka, která se aktivují po nasazení. To vše se může stát bez spuštění bezpečnostních nástrojů, protože závislost byla „deklarována“ v balíček-lock.json.

Tohle není jen chyba. Je to narušení dodavatelského řetězce, které čeká na to, až se stane, a překlepy v NPM z něj dělají skutečnou hrozbu.

Detekce a prevence překlepů v závislostech pro zmírnění překlepů typu NPM

Překlepy v balíček-lock.json jsou neviditelné, pokud je aktivně nehledáte. Zde je návod, jak začít:

  • Statická analýzaNěkteré nástroje tyto problémy nezachytí, ale specializované skenery závislostí ano. Integrujte nástroje, které skenují vzory překlepů v npm a kontrolují vaše balíček-lock.json pro nesrovnalosti.
  • Linting LockfilesPoužijte vlastní pravidla lintingu nebo pluginy k ověření balíček-lock.json záznamy v seznamech známých bezpečných adres.
  • Recenze kóduVzájemné hodnocení je klíčové. Rozdíly v uzamčených souborech jsou hlučné, ale naučte svůj tým je kontrolovat stejně jako kód.
  • Automatické kontroly: Založit pre-commit hooks nebo úlohy CI pro odmítnutí neověřených nebo podezřelých položek v balíček-lock.json.

Zde je praktický příklad použití akcí GitHub:

Toto není neprůstřelné, ale označuje podivné názvy balíčků, které by mohly signalizovat překlepy v npm.

Zabezpečení projektů Node.js proti typosquattingu v NPM a útokům dodavatelského řetězce

Chcete-li uzamknout vaši aplikaci Node.js a zabránit útokům prostřednictvím balíček-lock.json:

  • Přísné připínání verzíVyhněte se rozsahům verzí (^, ~) v balíček.jsonUzamkněte všechny závislosti na přesné verze, abyste omezili neočekávané aktualizace a posuny.
  • Ověření podpisuVyužijte nástroje jako Sigstore a funkce provenience npm k ověření pravosti a původu balíčků.
  • Neměnné sestavení: Vždy používejte npm ci s ověřeným balíček-lock.json soubor v produkčním prostředí. Nikdy se nespoléhejte na npm install během nasazení, protože to může zavést neověřené změny.
  • Průběžné sledováníPoužívejte monitorovací řešení, která vás upozorní, když:
    • Nové balíčky se objeví ve vašem balíček-lock.json
    • Stávající balíčky se neočekávaně mění
    • Podezřelé vzorce (např. názvy balíčků jako expresy, reagovat-domm, úhlové) jsou detekovány
  • Nástroje pro audit závislostíIntegrujte automatizované nástroje, jako například audit npm, Snyknebo Xygeni do vaší CI pipeline prohledávat zranitelnosti a indikátory překlepů.
  • Hygiena uzamčených souborů: Léčit balíček-lock.json jako kód. Zkontrolujte si to během pull requests, zejména při aktualizaci nebo přidání závislostí.
  • Automatizovaný Pre-Commit Kontroly: Použijte pre-commit hooks ověřit váš lockfile předtím, než se dostane do systému správy verzí.

balíček-lock.json je vysoce hodnotným cílem v útocích typu „typosquatting“ v NPM. Překlep jako reagovat-domm or lody dává útočníkům přímou cestu do vaší sestavy pipelineObezřetnost v souvislosti s tímto spisem je nezbytná pro zachování integrity dodavatelského řetězce.

Takže jediná překlepová chyba může vaši stavbu potopit. Nenechte to!

Překlep v balíček-lock.json Není to jen nedbalé kódování; je to skutečný vektor hrozby pro typosquatting v NPM. Soubor je strážcem brány a pokud je kompromitován, váš pipeline je taky. Oprava není zrovna lákavá: zpomalit, zkontrolovat soubor s uzamčením, automatizovat kontroly a sledovat změny. Ale stojí to za to.

Pro zvýšení úrovně vaší obrany zvažte použití nástrojů, jako je Xygeni, které jsou navrženy k detekci překlepů, kontrole JSON zámku balíčku soubory a zachovat integritu balíčků v celém CI/CD pipelineV době open source se důvěra získává a ověřuje.

nástroje pro analýzu složení softwaru SCA
Stanovte priority, opravte a zabezpečte svá softwarová rizika
Získejte svůj bezplatný účet.
Nevyžaduje se žádná kreditní karta.

Zajistěte si vývoj a dodávky softwaru

s produktovým balíčkem Xygeni