package-lock.json - pakkelås json - npm typosquatting

Package-Lock.json Typo: Hvordan det kan kapre dit build

Hvorfor Package-Lock.JSON er vigtig for udviklere

I Node.js-projekter er package-lock.json ikke blot en ledsagende fil til package.json. Den låser de nøjagtige versioner af alle installerede afhængigheder, inklusive indbyggede versioner. Denne fil sikrer reproducerbarhed på tværs af miljøer og forhindrer uventede ændringer, når nye pakkeversioner udgives. Uden den ville udviklere risikere forskellige adfærdsmønstre i udviklings-, test- og produktionsfaser på grund af skiftende afhængighedstræer og endda åbne døren for npm typosquatting, hvis fejl glider ind i låsefilen.


Når det bruges korrekt, sikrer package-lock.json, at alle på dit team og dine CI/CD pipeline installationer den samme kode. Men én stille tastefejl i denne fil kan omdirigere din app direkte i en fælde.

Hvordan fører typografiske fejl til NPM Typosquatting-angreb?

Lad os sige en legitim pakke i pakke.json er stavet korrekt, som f.eks. lodashMen en stavefejl i package-lock.json, Såsom lodas, kan stadig snige sig ind i dit afhængighedstræ, især hvis nogen manuelt redigerede det, eller et defekt værktøj skrev det.

Angribere satser på disse stavefejl med en teknik kaldet npm typosquatting. De uploader ondsindede pakker med navne, der ligner populære navne (f.eks. react-domm, udtrykker, kantetHvis din pakkelås-JSON indeholder en sådan tastefejl, installerer npm angriberens pakke uden spørgsmål, fordi du eksplicit har bedt den om det.

npm typosquatting er ikke kun teoretisk. Virkelige npm typosquatting-angreb har skabt overskrifter. Et sådant eksempel var Coa-pakkekompromisHvor skadelig kode blev sendt via en opdatering til en betroet pakke. Forskellen er, at med npm typosquatting inviterer udvikleren ved et uheld angriberen ind ved at indtaste en afhængighed forkert.

Reelle risici i CI/CD PipelineForårsaget af pakkelås json-fejl

Moderne CI/CD pipelinegodbid package-lock.json som en kilde til sandhed. Under opbygning eller implementering, pipeline løber npm ci or npm installere, som begge læser fra låsefilen. Hvis der er en tastefejl, hentes den skadelige pakke automatisk. Ingen advarsler. Ingen prompts.

Det betyder, at en tastefejl, der introduceres under lokal udvikling, kan sprede sig lydløst hele vejen til staging eller endda produktion. Angribere kan integrere legitimationsoplysninger, kryptominere eller bagdøre, der aktiveres efter implementering. Alt dette kan ske uden at udløse sikkerhedsværktøjer, fordi afhængigheden blev "deklareret" i package-lock.json.

Dette er ikke bare en fejl. Det er et brud på forsyningskæden, der bare venter på at ske, og npm typosquatting gør det til en reel trussel.

Registrering og forebyggelse af afhængighedstypofejl for at afbøde NPM-typosquatting

Slåfejl i package-lock.json er usynlige, medmindre du aktivt leder efter dem. Sådan starter du:

  • Statisk AnalyseNogle værktøjer opdager ikke disse problemer, men dedikerede afhængighedsscannere kan. Integrer værktøjer, der scanner for npm typosquatting-mønstre og kontrollerer dine package-lock.json for uoverensstemmelser.
  • Linting LockfilesBrug brugerdefinerede linting-regler eller plugins til at validere package-lock.json poster på kendte sikre lister.
  • Kode anmeldelserFagfællebedømmelser er afgørende. Låsefilsdifferenser er støjende, men lær dit team at gennemgå dem ligesom kode.
  • Automatiserede kontroller: Opsætning pre-commit hooks eller CI-job for at afvise ubekræftede eller mistænkelige poster i package-lock.json.

Her er et praktisk eksempel på brug af GitHub Actions:

Dette er ikke skudsikkert, men det markerer mærkelige pakkenavne, der kan signalere npm typosquatting.

Sikring af Node.js-projekter mod NPM Typosquatting og Supply Chain-angreb

For at låse din Node.js-app og forhindre angreb via package-lock.json:

  • Streng versionsfastgørelseUndgå versionsintervaller (^, ~) i pakke.jsonLås alle afhængigheder til præcise versioner for at reducere uventede opdateringer og afvigelser.
  • UnderskriftsbekræftelseUdnyt værktøjer som Sigstore og npms proveniensfunktioner til at verificere pakkers ægthed og oprindelse.
  • Uforanderlige builds: Brug altid npm ci med en valideret package-lock.json fil i produktionsmiljøer. Stol aldrig på npm installere under implementeringer, da det kan introducere ukontrollerede ændringer.
  • Kontinuerlig overvågningBrug overvågningsløsninger, der advarer dig, når:
    • Nye pakker vises i din package-lock.json
    • Eksisterende pakker ændres uventet
    • Mistænkelige mønstre (f.eks. pakkenavne som udtrykker, react-domm, kantet) er opdaget
  • Værktøjer til afhængighedsrevisionIntegrer automatiserede værktøjer som f.eks. npm revision, SNYK eller Xygeni ind i dit CI pipeline at scanne for sårbarheder og indikatorer for typosquatting.
  • Låsefil Hygiejne: Forkæl package-lock.json som kode. Gennemgå den under pull requests, især når afhængigheder opdateres eller tilføjes.
  • Automatiseret Pre-Commit Kontrol: Brug pre-commit hooks for at validere din låsefil, før den når versionskontrol.

package-lock.json er et mål med høj værdi i npm typosquatting-angreb. En typografisk fejl som react-domm or lodas giver angribere en direkte vej ind i dit build pipelineÅrvågenhed omkring denne fil er afgørende for at opretholde forsyningskædens integritet.

Så en enkelt tastefejl kan ødelægge dit build. Lad det ikke ske!

En tastefejl i package-lock.json er ikke bare sjusket kodning; det er en reel trusselvektor for npm typosquatting. Filen er en gatekeeper, og hvis den kompromitteres, vil din pipeline er det også. Løsningen er ikke sexet: sæt farten ned, gennemgå låsefilen, automatiser kontroller og overvåg ændringer. Men det er det værd.

For at forbedre dit forsvar, overvej at bruge værktøjer som Xygeni, der er designet til at opdage typosquatting, inspicere pakkelås JSON filer og beskytte pakkeintegriteten i hele din CI/CD pipelineI open source-tiden optjener og verificeres tillid.

sca-tools-software-kompositionsanalyseværktøjer
Prioriter, afhjælp og sørg for dine softwarerisici
Få din gratis konto.
Der kræves ikke noget kreditkort.

Sikr din softwareudvikling og -levering

med Xygeni-produktsuite