package-lock.json — pakotnes bloķēšana json — npm typosquatting

Package-Lock.json kļūda: kā tā var nolaupīt jūsu versiju

Kāpēc Package-Lock.JSON ir svarīgs izstrādātājiem

Node.js projektos package-lock.json nav tikai package.json pavadošais fails. Tas bloķē katras instalētās atkarības precīzas versijas, tostarp ligzdotās. Šis fails nodrošina atkārtojamību dažādās vidēs un novērš negaidītas izmaiņas, publicējot jaunas pakotņu versijas. Bez tā izstrādātāji riskētu ar atšķirīgu uzvedību izstrādes, testēšanas un ražošanas posmos mainīgo atkarību koku dēļ un pat pavērtu durvis npm typosquatting, ja bloķēšanas failā parādās kļūdas.


Pareizi lietojot, package-lock.json nodrošina, ka ikviens jūsu komandas dalībnieks un jūsu CI/CD pipeline instalē tas pats kods. Taču viena klusa drukas kļūda šajā failā var novirzīt jūsu lietotni tieši uz slazdu.

Kā drukas kļūdas noved pie NPM drukas kļūdas uzbrukumiem?

Teiksim, likumīgs iepakojums iekšā pack.json ir pareizi uzrakstīts, piemēram lodashBet kļūdaini uzrakstīts ieraksts pack-lock.json, Piemēram, lodas, joprojām var iekļūt jūsu atkarību kokā, it īpaši, ja kāds to manuāli rediģēja vai to uzrakstīja kļūdains rīks.

Uzbrucēji izmanto šīs drukas kļūdas, izmantojot tehniku, ko sauc par npm typosquatting. Viņi augšupielādē ļaunprātīgas pakotnes ar nosaukumiem, kas atgādina populārus (piemēram, react-domm, ekspresi, leņķa). Ja jūsu pakotnes bloķēšanas JSON failā ir šāda drukas kļūda, npm instalē uzbrucēja pakotni bez ierunām, jo ​​jūs to skaidri norādījāt.

npm typosquatting nav tikai teorētiska problēma. Reālās pasaules npm typosquatting uzbrukumi ir nonākuši virsrakstos. Viens šāds piemērs bija COA paketes kompromiss, Kur ļaunprātīgu kodu tika piegādāts, izmantojot uzticamas pakotnes atjauninājumu. Atšķirība ir tāda, ka ar npm typosquatting izstrādātājs nejauši uzaicina uzbrucēju, nepareizi ierakstot atkarību.

Reāli riski CI/CD PipelineIzraisa pakotnes bloķēšanas JSON kļūdas

mūsdienu CI/CD pipelines ārstēt pack-lock.json kā patiesības avotu. Izveides vai izvietošanas laikā pipeline darbojas npm ci or npm instalēt, kas abi nolasa no bloķēšanas faila. Ja ir drukas kļūda, ļaunprātīgā pakotne tiek automātiski ielādēta. Nav brīdinājumu. Nav uzvedņu.

Tas nozīmē, ka lokālās izstrādes laikā ieviesusies drukas kļūda var nemanāmi izplatīties līdz pat izstrādes vai pat ražošanas videi. Uzbrucēji var iestrādāt akreditācijas datu zagļus, kriptovalūtu ieguvējus vai aizmugures durvis, kas aktivizējas pēc izvietošanas. Tas viss var notikt, neaktivizējot drošības rīkus, jo atkarība tika “deklarēta” pack-lock.json.

Tā nav tikai kļūda. Tas ir piegādes ķēdes pārkāpums, kas tikai gaida, lai notiktu, un npm typosquatting padara to par reālu draudu.

Atkarību kļūdu atklāšana un novēršana, lai mazinātu NPM typosquatting

Drukas kļūdas pack-lock.json ir neredzami, ja vien jūs tos aktīvi nemeklējat. Lūk, kā sākt:

  • Statiskā analīzeDaži rīki šīs problēmas neatklāj, bet specializēti atkarību skeneri to var. Integrējiet rīkus, kas skenē npm typosquatting modeļus un pārbauda jūsu pack-lock.json neatbilstību dēļ.
  • Linting LockfilesIzmantojiet pielāgotus linting noteikumus vai spraudņus validācijai pack-lock.json ierakstus, salīdzinot ar zināmajiem drošajiem sarakstiem.
  • Atsauksmes par koduVienaudžu vērtējumi ir ļoti svarīgi. Bloķēto failu atšķirības ir trokšņainas, taču iemāciet savai komandai tos pārskatīt tāpat kā kodu.
  • Automatizētās pārbaudes: Uzstādīt pre-commit hooks vai CI darbi, lai noraidītu nepārbaudītus vai aizdomīgus ierakstus pack-lock.json.

Šeit ir praktisks piemērs, izmantojot GitHub darbības:

Tas nav nevainojams risinājums, taču tas atzīmē dīvainus pakotņu nosaukumus, kas varētu liecināt par npm typosquatting.

Node.js projektu aizsardzība pret NPM typosquatting un piegādes ķēdes uzbrukumiem

Lai bloķētu savu Node.js lietotni un novērstu uzbrukumus, izmantojot pack-lock.json:

  • Stingra versiju piespraušanaIzvairieties no versiju diapazoniem (^, ~) iekšā pack.jsonBloķējiet visas atkarības no precīzām versijām, lai samazinātu negaidītus atjauninājumus un nobīdi.
  • Paraksta pārbaudeIzmantojiet tādus rīkus kā Sigstore un npm izcelsmes funkcijas, lai pārbaudītu paku autentiskumu un izcelsmi.
  • Nemaināmas versijas: Vienmēr lietojiet npm ci ar apstiprinātu pack-lock.json failu ražošanas vidē. Nekad nepaļaujieties uz npm instalēt izvietošanas laikā, jo tas var ieviest nepārbaudītas izmaiņas.
  • Nepārtraukts monitoringsIzmantojiet uzraudzības risinājumus, kas brīdina, kad:
    • Jaunas pakas parādās jūsu pack-lock.json
    • Esošās pakotnes negaidīti mainās
    • Aizdomīgi modeļi (piemēram, pakotņu nosaukumi, piemēram, ekspresi, react-domm, leņķa) tiek atklāti
  • Atkarību audita rīkiIntegrējiet automatizētus rīkus, piemēram, npm audits, Snyk, vai Ksigēni jūsu CI pipeline lai skenētu ievainojamības un drukas kļūdu indikatorus.
  • Bloķēto failu higiēna: Ārstēt pack-lock.json kā kodu. Pārskatiet to laikā pull requests, īpaši, ja atkarības tiek atjauninātas vai pievienotas.
  • Automatizēta Pre-Commit Pārbaudes: Izmantot pre-commit hooks lai validētu jūsu bloķēšanas failu, pirms tas sasniedz versiju kontroli.

pack-lock.json ir vērtīgs mērķis npm typosquatting uzbrukumos. Drukas kļūda, piemēram, react-domm or lodas dod uzbrucējiem tiešu piekļuvi jūsu versijai pipelineModrība attiecībā uz šo failu ir būtiska piegādes ķēdes integritātes saglabāšanai.

Tātad, viena vienīga drukas kļūda var sabojāt jūsu konstrukciju. Neļaujiet tai notikt!

Drukas kļūda pack-lock.json nav tikai pavirša kodēšana; tas ir reāls draudu vektors npm typosquatting. Fails ir vārtu sargs, un, ja tas tiek apdraudēts, jūsu pipeline arī ir. Risinājums nav seksīgs: palēniniet tempu, pārskatiet bloķēšanas failu, automatizējiet pārbaudes un uzraugiet izmaiņas. Bet tas ir tā vērts.

Lai uzlabotu savu aizsardzību, apsveriet iespēju izmantot tādus rīkus kā Xygeni, kas paredzēti, lai atklātu drukas kļūdas, pārbaudītu pakotnes bloķēšanas JSON failus un aizsargāt pakotnes integritāti visā jūsu ierīcē CI/CD pipelineAtvērtā pirmkoda laikmetā uzticība tiek nopelnīta un pārbaudīta.

sca-tools-software-composition-analysis-tools
Prioritizējiet, novērsiet un aizsargājiet savus programmatūras riskus
Iegūstiet savu bezmaksas kontu.
Nepieciešama kredītkarte.

Nodrošiniet programmatūras izstrādi un piegādi

ar Xygeni produktu komplektu