package-lock.json - package lock json - npm typosquatting

Package-Lock.json Typo: Paano Nito Maa-hijack ang Iyong Build

Bakit Mahalaga ang Package-Lock.JSON para sa mga Developer

Sa mga proyekto ng Node.js, ang package-lock.json ay hindi lamang isang kasamang file ng package.json. Nila-lock nito ang eksaktong mga bersyon ng bawat naka-install na dependency, kabilang ang mga naka-nest. Tinitiyak ng file na ito ang reproducibility sa iba't ibang environment at pinipigilan ang mga hindi inaasahang pagbabago kapag inilathala ang mga bagong bersyon ng package. Kung wala ito, manganib ang mga developer na magkaroon ng iba't ibang pag-uugali sa mga yugto ng dev, test, at produksyon dahil sa pagbabago ng mga dependency tree, at magbubukas pa ng pinto sa npm typosquatting kung ang mga pagkakamali ay makapasok sa lockfile.


Kapag ginamit nang tama, tinitiyak ng package-lock.json na lahat ng miyembro ng iyong koponan at ang iyong CI/CD pipeline install ang parehong code. Ngunit ang isang tahimik na typo sa file na ito ay maaaring direktang i-redirect ang iyong app sa isang patibong.

Paano Nagdudulot ng NPM Typosquatting Attacks ang mga Typo?

Sabihin nating isang lehitimong pakete sa package.json ay wastong nabaybay, tulad ng lodashNgunit isang maling nai-type na entry sa package-lock.json, Gaya ng mga loda, maaari pa ring palihim na makapasok sa iyong dependency tree, lalo na kung may manu-manong nag-edit nito o isang sirang tool ang sumulat nito.

Umaasa ang mga umaatake sa mga typo na ito gamit ang isang pamamaraan na tinatawag na npm typosquatting. Nag-a-upload sila ng mga malisyosong pakete na may mga pangalang kahawig ng mga sikat (hal., react-domm, nagpapahayag, angularKung ang iyong package lock JSON ay may kasamang typo na tulad niyan, ii-install ng npm ang package ng attacker nang walang tanong, dahil hayagan mong sinabihan ito.

Ang npm typosquatting ay hindi lamang teoretikal. Ang mga totoong pag-atake sa npm typosquatting ay naging laman ng mga balita. Isa sa mga halimbawa nito ay ang Kompromiso sa pakete ng Coa, Kung saan malisyosong code ay ipinadala sa pamamagitan ng update ng isang pinagkakatiwalaang package. Ang pagkakaiba ay sa npm typosquatting, aksidenteng iniimbitahan ng developer ang attacker sa pamamagitan ng maling pag-type ng isang dependency.

Mga Tunay na Panganib sa CI/CD PipelineSanhi ng mga error sa package lock json

Moderno CI/CD pipelinetreat package-lock.json bilang pinagmumulan ng katotohanan. Sa panahon ng pagbuo o pag-deploy, ang pipeline tumatakbo npm ci or install npm, na parehong nagbabasa mula sa lockfile. Kung mayroong typo, awtomatikong kukunin ang malisyosong pakete. Walang mga alerto. Walang mga prompt.

Nangangahulugan ito na ang isang typo na ipinakilala sa panahon ng lokal na pag-develop ay maaaring kumalat nang tahimik hanggang sa staging o maging sa produksyon. Maaaring mag-embed ang mga attacker ng mga credential stealer, crypto miner, o backdoor na nagpapagana pagkatapos ng deployment. Ang lahat ng ito ay maaaring mangyari nang hindi nati-trigger ang mga security tool, dahil ang dependency ay "idineklara" sa package-lock.json.

Hindi lamang ito isang pagkakamali. Isa itong paglabag sa supply chain na naghihintay na mangyari, at ang npm typosquatting ay ginagawa itong isang tunay na banta.

Pagtukoy at Pag-iwas sa mga Dependency Typo upang Bawasan ang NPM Typosquatting

Mga typo sa package-lock.json ay hindi nakikita maliban kung aktibo mo silang hahanapin. Narito kung paano magsimula:

  • Static na PagsusuriHindi natutugunan ng ilang tool ang mga isyung ito, ngunit kaya ito ng mga nakalaang dependency scanner. Isama ang mga tool na nag-i-scan para sa mga pattern ng typosquatting ng npm at suriin ang iyong package-lock.json para sa mga hindi pagkakapare-pareho.
  • Mga Lockfile ng LintingGumamit ng mga pasadyang panuntunan sa linting o mga plugin upang mapatunayan package-lock.json mga entry laban sa mga kilalang ligtas na listahan.
  • Mga Review ng CodeMahalaga ang mga peer review. Maingay ang mga lockfile diff, pero turuan mo ang iyong team na repasuhin ang mga ito tulad ng code.
  • Mga Automated Check: I-set up pre-commit hooks o mga trabaho sa CI upang tanggihan ang mga hindi na-verify o kahina-hinalang entry sa package-lock.json.

Narito ang isang praktikal na halimbawa gamit ang GitHub Actions:

Hindi ito bulletproof, ngunit minamarkahan nito ang mga kakaibang pangalan ng pakete na maaaring magsenyas ng npm typosquatting.

Pag-secure ng mga Proyekto ng Node.js Laban sa NPM Typosquatting at mga Pag-atake sa Supply Chain

Para i-lock ang iyong Node.js app at maiwasan ang mga pag-atake sa pamamagitan ng package-lock.json:

  • Pag-pin ng Mahigpit na Bersyon: Iwasan ang mga saklaw ng bersyon (^, ~) sa package.jsonI-lock ang lahat ng dependency sa eksaktong mga bersyon upang mabawasan ang mga hindi inaasahang update at drift.
  • Pag-verify ng LagdaGamitin ang mga tool tulad ng Sigstore at mga tampok ng pinagmulan ng npm upang mapatunayan ang pagiging tunay at pinagmulan ng mga pakete.
  • Mga Hindi Nababagong Build: Laging gamitin npm ci na may napatunayang package-lock.json file sa mga kapaligiran ng produksyon. Huwag kailanman umasa sa install npm habang nagde-deploy, dahil maaari itong magdulot ng mga hindi nasusuring pagbabago.
  • Patuloy na PagsubaybayGumamit ng mga solusyon sa pagsubaybay na mag-aalerto sa iyo kapag:
    • May mga bagong pakete na lumalabas sa iyong package-lock.json
    • Hindi inaasahang magbabago ang mga kasalukuyang pakete
    • Mga kahina-hinalang pattern (hal., mga pangalan ng pakete tulad ng nagpapahayag, react-domm, angular) ay natukoy
  • Mga Kagamitan sa Pag-audit ng Dependency: Pagsamahin ang mga awtomatikong kagamitan tulad ng npm audit, Snyk, O Xygeni sa iyong CI pipeline para mag-scan para sa mga kahinaan at mga indikasyon ng typosquatting.
  • Kalinisan ng Lockfile: Gamutin package-lock.json bilang code. Suriin ito habang pull requests, lalo na kapag ang mga dependency ay ina-update o idinaragdag.
  • Automated Pre-Commit Mga tseke: Gamitin pre-commit hooks para ma-validate ang iyong lockfile bago ito umabot sa version control.

package-lock.json ay isang mahalagang target sa mga npm typosquatting attack. Isang typo na tulad ng react-domm or mga loda nagbibigay sa mga umaatake ng direktang daan papasok sa iyong build pipelineAng pagbabantay sa talaksang ito ay mahalaga para sa pagpapanatili ng integridad ng supply chain.

Kaya, Isang Typo Lang Ang Maaaring Makasira Sa Iyong Paggawa. Huwag Mong Hayaan!

Isang typo package-lock.json hindi lang basta pabaya na pag-coding; isa itong tunay na banta para sa npm typosquatting. Ang file ay isang gatekeeper, at kung ito ay makompromiso, ang iyong pipeline ay masyadong. Hindi maganda ang solusyon: bagalan, suriin ang lockfile, i-automate ang mga pagsusuri, at subaybayan ang mga pagbabago. Pero sulit naman.

Para mapataas ang iyong depensa, isaalang-alang ang paggamit ng mga tool tulad ng Xygeni, na idinisenyo upang matukoy ang mga typosquatting, suriin JSON ng pag-lock ng pakete mga file, at pangalagaan ang integridad ng pakete sa buong CI/CD pipelineSa panahon ng open source, ang tiwala ay nakakamit at napapatunayan.

mga tool sa pagsusuri ng komposisyon ng software ng mga tool sa sca
Unahin, ayusin, at i-secure ang mga panganib ng iyong software
Kunin ang Iyong Libreng Account.
Walang kinakailangang credit card.

I-secure ang Iyong Pag-develop at Paghahatid ng Software

kasama ang Xygeni Product Suite