Яагаад Package-Lock.JSON нь хөгжүүлэгчдэд чухал вэ
Node.js төслүүдэд package-lock.json нь зөвхөн package.json-той хамтрагч файл биш юм. Энэ нь суулгасан хамаарлын бүх хувилбарыг, түүний дотор үүрлэсэн хувилбаруудыг түгждэг. Энэ файл нь орчин бүрт давтагдах чадварыг баталгаажуулж, шинэ багцын хувилбарууд нийтлэгдэх үед гэнэтийн өөрчлөлтөөс сэргийлдэг. Үүнгүйгээр хөгжүүлэгчид хамаарлын мод шилжсэний улмаас хөгжүүлэлт, туршилт, үйлдвэрлэлийн үе шатанд өөр өөр зан үйл хийх эрсдэлтэй бөгөөд хэрэв алдаа түгжих файлд орвол npm typosquatting хийх боломжийг нээх болно.
Зөв ашиглавал package-lock.json нь танай багийн бүх гишүүд болон таны CI/CD pipeline суулгах ижил код. Гэхдээ энэ файл дахь нэг чимээгүй алдаа нь таны аппликейшнийг шууд урхи руу чиглүүлж болзошгүй.
Бичгийн алдаа NPM бичвэрийн довтолгоонд хэрхэн хүргэдэг вэ?
Хууль ёсны багц гэж хэлье багц.json зөв бичигдсэн байна, жишээ нь ЛодашГэхдээ буруу оруулсан бичлэг байна package-lock.jsonЗэрэг Лодас, ялангуяа хэн нэгэн гараар засварласан эсвэл алдаатай хэрэгсэл бичсэн бол таны хамаарлын мод руу сэмхэн орж болно.
Халдагчид эдгээр алдаануудыг npm typosquatting гэж нэрлэгддэг аргаар ашигладаг. Тэд алдартай багцуудтай төстэй нэртэй хортой багцуудыг байршуулдаг (жишээ нь, реактив-домм, илэрхийлдэг, өнцгийнХэрэв таны багцын түгжээний JSON файлд иймэрхүү алдаа байгаа бол npm нь халдагчийн багцыг асуултгүйгээр суулгана, учир нь та үүнийг тодорхой хэлсэн.
npm typosquatting нь зөвхөн онолын асуудал биш юм. Бодит ертөнцийн npm typosquatting халдлагууд гарчиг болж байна. Үүний нэг жишээ бол Коа багцын буулт, хаана хортой код итгэмжлэгдсэн багцын шинэчлэлтээр дамжуулан илгээгдсэн. Ялгаа нь npm typosquatting-ийн үед хөгжүүлэгч нь хамаарлыг буруу бичиж халдагчийг санамсаргүйгээр урьж оруулдагт оршино.
Бодит эрсдэлүүд CI/CD Pipelinejson багцын түгжээний алдаанаас үүдэлтэй s
Орчин үеийн CI/CD pipelineамттан package-lock.json үнэний эх сурвалж болгон. Барих эсвэл байршуулах явцад, pipeline ажиллуулж npm ci or npm суулгах, хоёулаа цоожны файлаас уншдаг. Хэрэв бичгийн алдаа илэрвэл хортой багц автоматаар идэвхждэг. Анхааруулга байхгүй. Сануулга байхгүй.
Энэ нь орон нутгийн хөгжүүлэлтийн явцад оруулсан алдаа нь тайзны үе шат эсвэл бүр үйлдвэрлэл хүртэл чимээгүйхэн тархаж болно гэсэн үг юм. Халдагчид итгэмжлэл хулгайлагч, крипто олборлогч эсвэл байршуулалтын дараах үйл явцыг идэвхжүүлдэг арын хаалга суулгаж болно. Энэ бүхэн нь аюулгүй байдлын хэрэгслийг идэвхжүүлэлгүйгээр тохиолдож болно, учир нь хамаарлыг "зарласан" байсан. package-lock.json.
Энэ бол зүгээр нэг алдаа биш. Энэ бол хүлээгдэж буй хангамжийн сүлжээний доголдол бөгөөд npm typoskvotting нь үүнийг жинхэнэ аюул заналхийлэл болгож байна.
NPM Typosquatting-ийг бууруулахын тулд хамаарлын алдааг илрүүлж, урьдчилан сэргийлэх
Бичих алдаанууд package-lock.json Хэрэв та тэдгээрийг идэвхтэй хайхгүй бол үл үзэгдэх болно. Хэрхэн эхлэх вэ:
- Статик шинжилгээЗарим хэрэгслүүд эдгээр асуудлыг илрүүлдэггүй ч зориулалтын хамаарлын сканнерууд үүнийг илрүүлж чаддаг. npm typosquatting загваруудыг сканнерддаг хэрэгслүүдийг нэгтгэж, таны package-lock.json зөрчилдөөний хувьд.
- Линтинг цоожны файлуудБаталгаажуулахын тулд өөрчлөн тохируулсан линтинг дүрэм эсвэл залгаасуудыг ашиглана уу package-lock.json мэдэгдэж буй аюулгүй жагсаалтын эсрэг оруулгууд.
- Кодын тойм: Үе тэнгийнхний үнэлгээ чухал. Lockfile-ийн ялгаа нь дуу чимээ ихтэй ч багтаа код шиг хянахыг заа.
- Автомат шалгалт: Тохируулах pre-commit hooks эсвэл баталгаажаагүй эсвэл сэжигтэй оруулгуудыг няцаахын тулд CI ажлууд package-lock.json.
GitHub Actions-ийг ашиглах практик жишээ энд байна:
Энэ нь найдвартай биш боловч npm typoskvatting-ийг дохио өгч болох хачин багцын нэрсийг тэмдэглэдэг.
Node.js төслүүдийг NPM Typosquatting болон хангамжийн сүлжээний халдлагаас хамгаалах
Node.js аппликейшнаа түгжиж, халдлагаас урьдчилан сэргийлэхийн тулд package-lock.json:
- Хатуу хувилбарын бэхлэлтХувилбарын хүрээнээс зайлсхий (^, ~in багц.jsonГэнэтийн шинэчлэлтүүд болон шилжилтийг багасгахын тулд бүх хамаарлыг яг тодорхой хувилбаруудаар түгж.
- Гарын үсгийн баталгаажуулалтБагцын жинхэнэ байдал болон гарал үүслийг баталгаажуулахын тулд Sigstore болон npm-ийн гарал үүслийн онцлог зэрэг хэрэгслүүдийг ашиглаарай.
- Хувиршгүй бүтээн байгуулалтууд: Үргэлж хэрэглэнэ npm ci баталгаажсан package-lock.json үйлдвэрлэлийн орчинд файл хадгална уу. Хэзээ ч найдахгүй npm суулгах байршуулалтын үеэр, учир нь энэ нь шалгагдаагүй өөрчлөлтүүдийг оруулж болзошгүй.
- Тогтмол хяналт тавихДараах тохиолдолд танд мэдэгдэх хяналтын шийдлүүдийг ашиглаарай:
- Таны дотор шинэ багцууд гарч ирнэ package-lock.json
- Одоо байгаа багцууд гэнэтийн байдлаар өөрчлөгддөг
- Сэжигтэй хэв маяг (жишээ нь, багцын нэр гэх мэт) илэрхийлдэг, реактив-домм, өнцгийн) илэрсэн
- Хамаарлын аудитын хэрэгслүүд: гэх мэт автоматжуулсан хэрэгслүүдийг нэгтгэх npm аудит, Снык, эсвэл Ксигени таны CI руу pipeline эмзэг байдал болон бичгийн алдааны үзүүлэлтүүдийг сканнердах.
- Түгжээтэй файлын эрүүл ахуй: Эмчлэх package-lock.json код болгон. Үүнийг дараах хугацаанд хянана уу pull requests, ялангуяа хамаарлуудыг шинэчлэх эсвэл нэмэх үед.
- Автоматжуулсан Pre-Commit шалгах: Ашиглах pre-commit hooks цоожны файлаа хувилбарын хяналтад хүрэхээс өмнө баталгаажуулахын тулд.
package-lock.json нь npm typoskvotting халдлагын өндөр үнэ цэнэтэй бай юм. typo гэх мэт реактив-домм or Лодас халдагчид таны бүтээн байгуулалт руу шууд зам тавьж өгдөг pipelineЭнэ файлын талаарх сонор сэрэмж нь хангамжийн сүлжээний бүрэн бүтэн байдлыг хадгалахад чухал үүрэгтэй.
Тиймээс ганцхан алдаа таны барилгыг живүүлж болзошгүй. Үүнийг бүү зөвшөөр!
Бичгийн алдаа package-lock.json зүгээр л хайнга кодчилол биш; энэ нь npm typosquatting-ийн жинхэнэ аюулын вектор юм. Файл нь хаалгач бөгөөд хэрэв энэ нь эвдэрсэн бол таны pipeline хэтэрхий юм. Засвар нь тийм ч сонирхолтой биш: удаашруулж, түгжээний файлыг хянаж, шалгалтыг автоматжуулж, өөрчлөлтийг хянаж болно. Гэхдээ энэ нь үнэ цэнэтэй юм.
Хамгаалалтын түвшингээ сайжруулахын тулд typoskvotting-ийг илрүүлэх, шалгах зориулалттай Xygeni гэх мэт хэрэгслүүдийг ашиглах талаар бодож үзээрэй. JSON багцын түгжээ файлуудыг хадгалах, багцын бүрэн бүтэн байдлыг таны туршид хамгаалах CI/CD pipelineНээлттэй эхийн эрин үед итгэлцлийг олж авч, баталгаажуулдаг.





