npm i -s - npm install --save - npm მავნე პაკეტები

NPM i-ები და თქვენს დამოკიდებულებებში არსებული ფარული რისკები

რა ხდება სინამდვილეში npm i-s-ის გაშვებისას

როდესაც აკრიფებთ npm i -s, თქვენ უბრალოდ დამოკიდებულების ინსტალაციაზე მეტს აკეთებთ; თქვენ ცვლით თქვენი პროექტის მიწოდების ჯაჭვს. ის -s დროშა შემოკლებულია –შენახვაnpm i -s ან npm install –save-ის გაშვება აინსტალირებს პაკეტს და იწერს მას. დამოკიდებულებები განყოფილება თქვენი პაკეტი.jsonამ მომენტიდან, ყველა გარემო, რომელიც მუშაობს npm ინსტალაცია ჩამოტვირთავს იმავე დამოკიდებულებას.

მაგალითი:

				
					# Adds express to dependencies
npm i -s express


				
			

ეს მოსახერხებელია, მაგრამ ასევე მუდმივი. თუ პაკეტის წყარო არ არის დამოწმებული, ან თუ დამოკიდებულების ხე მოიცავს არასანდო პაკეტებს, თქვენ ფაქტობრივად ბლოკავთ პოტენციურ შეტევის ვექტორს, რომელიც ვრცელდება ყველა ბილდში, ყველა გარემოში და ყველა დეველოპერის მანქანაში. დაუდასტურებელი პაკეტები შეიძლება შეიცავდეს:

  • დამალული ქსელის უკუკავშირები
  • მონაცემთა ექსტრაქციის კოდი
  • ინსტალაციის შემდგომი სკრიპტები, რომლებიც ავტომატურად მუშაობს

npm i -s ბრძანება თავისთავად საშიში არ არის, მაგრამ მის მიერ დაინსტალირებულმა და საიდან შეიძლება გამოიწვიოს npm მავნე პაკეტების შეღწევა, რომლებიც ჩუმად აზიანებენ თქვენს პროექტს.

როგორ იყენებენ თავდამსხმელები npm-ს მავნე პაკეტების გასაგზავნად

თავდამსხმელებს უყვართ npm, რადგან ის თანამედროვე აპლიკაციების შემუშავების ბირთვს წარმოადგენს. ყოველ ჯერზე, როდესაც დეველოპერი npm install –save-ს გაუშვებს, არსებობს კომპრომეტირების შესაძლებლობა, თუ დამოკიდებულების წყაროები ფრთხილად არ იქნება დამოწმებული.

შეტევის გავრცელებული ვექტორები

  1. ტიპოქტაცია: თავდამსხმელები აქვეყნებენ პაკეტებს, რომლებსაც პოპულარული სახელების მსგავსი სახელები აქვთ. მაგალითი: ინსტალაცია ექსპრესი ნაცვლად ექსპრესი npm i -s-ის მეშვეობით, დამატებითი „s“ ტროას პაკეტს ტვირთავს.
  2. დამოკიდებულების დაბნეულობა: კერძო დამოკიდებულება, როგორიცაა @internal/api-კლიენტი შესაძლოა, მას იმავე სახელწოდების საჯარო npm პაკეტი ჩრდილში მოექცეს.
    როგორც კი დეველოპერი გაუშვებს npm i -s @internal/api-client ბრძანებას, მის ნაცვლად დაინსტალირდება მავნე საჯარო ვერსია.
  3. კომპრომეტირებული მომვლელები: თავდამსხმელები იტაცებენ ლეგიტიმურ ანგარიშებს ან შეჰყავთ მავნე კოდი სანდო პროექტებში, რითაც ცნობილ დამოკიდებულებას ინფექციის ვექტორად აქცევენ.

მავნე ინექციის მაგალითი:

 ❌ მავნე დამოკიდებულების სნიპეტის მაგალითი

				
					postinstall: node exfiltrate-secrets.js
				
			

npm მავნე პაკეტების გავრცელების შედეგად მსხვილ ორგანიზაციებსაც კი დაზარალდნენ. standard npm ინსტალაცია - შენახვა ბრძანებები. თავდამსხმელები იყენებენ ნდობის ჯაჭვს და დეველოპერები იშვიათად ამჩნევენ ამას მანამ, სანამ ავტორიზაციის მონაცემები ან მონაცემები არ გაჟონავს.

ინსტალაციის სკრიპტებისა და ინსტალაციის შემდგომი პერიოდის ჩუმი საფრთხე Hooks – npm i -s 

npm ეკოსისტემა პაკეტებს საშუალებას აძლევს შეასრულონ სასიცოცხლო ციკლის სკრიპტები, როგორიცაა ინსტალაცია or პოსტინსტალაცია ავტომატურად. ეს სასარგებლოა ბინარული ფაილების შესაქმნელად, მაგრამ ასევე ღია კარს უქმნის ბოროტად გამოყენებას. როდესაც ასრულებთ npm i -s ან npm install –save ბრძანებებს, npm ავტომატურად ასრულებს ამ სკრიპტებს დადასტურების მოთხოვნის გარეშე. A მავნე დამოკიდებულება ამ ქცევის გამოყენება შესაძლებელია:

  • სისტემის ბრძანებების გაშვება
  • შექმენით უკანა კარები ადგილობრივ გარემოში
  • SSH გასაღებების, ტოკენების ან გარემოს ცვლადების მოპარვა

მაგალითი (არამავნე, მაგრამ სარისკო ქცევა):

				
					"scripts": {
  "postinstall": "node ./scripts/setup.js"
}

				
			

If setup.js თუ სისტემა შეიცვლება ან მოდიფიცირდება ზემოთ, ინსტალაციის დროს თქვენს სისტემას შეუძლია ჩუმად შეასრულოს თავდამსხმელის მიერ კონტროლირებადი კოდი. In CI/CD pipelineს, სადაც npm i -s თუ აწყობის დროს ავტომატურად გაეშვება, ეს რისკი იზრდება. ერთ npm მავნე პაკეტს შეუძლია აწყობის აგენტის კომპრომეტირება, გარემოს საიდუმლოებების ამოღება ან განლაგების არტეფაქტების გაყალბება.

რატომ არ არის საკმარისი პაკეტის ხელით განხილვა npm i-s-ის გამოყენებით

დეველოპერები ხშირად თვლიან, რომ შემოწმება პაკეტი.json ფაილის ან რეპოზიტორის README-ის წაკითხვა უსაფრთხოებას უზრუნველყოფს. ეს ასე არ არის. ერთი npm ინსტალაციის –save-ით შესაძლებელია ათობით, ზოგჯერ ასობით, გარდამავალი დამოკიდებულების გამოძახება. თითოეულ მათგანს შეუძლია დაუცველობის ან მავნე კოდის შეტანა ზედა დონის დამოკიდებულებებში ხილვადობის გარეშე.

რეალური სამყაროს პრობლემა: დამოკიდებულების გავრცელება

20 პირდაპირი დამოკიდებულების მქონე პროექტი ადვილად შეიძლება 500-ზე მეტ გარდამავალ პაკეტად იქცეს. მათი ხელით გადახედვა შეუძლებელია. თავდამსხმელები ამ სირთულეს იყენებენ npm მავნე პაკეტების ხის სიღრმეში დასამალად.

მინი-საკონტროლო სია უფრო უსაფრთხო დამოკიდებულების გამოყენებისთვის

  • გამოყენება npm აუდიტი მდე npm ls ფარული დამოკიდებულებების იდენტიფიცირებისთვის.
  • npm i -s-ის გაშვებამდე გადახედეთ პაკეტის ავტორობას და ბოლო განახლების თარიღებს.
  • მოერიდეთ ინსტალაციას დაუდასტურებელი URL-ებიდან ან Git რეპოზიტორებიდან.
  • შეამოწმეთ საეჭვო სკრიპტები (ინსტალაცია, მომზადება, პოსტინსტალაცია) პაკეტი.json.
  • ვერსიების დაბლოკვა პაკეტი-lock.json და ჩართეთ ხელმოწერის დადასტურება.

ხელით განხილვა დასაწყისია, მაგრამ რეალური დაცვისთვის ავტომატიზაცია აუცილებელია.

დამოკიდებულების სკანირებისა და პოლიტიკის კონტროლის ინტეგრირება CI/CD

თანამედროვე DevSecOps pipelines ყველა npm i-s უნდა განიხილებოდეს, როგორც npm მავნე პაკეტების პოტენციური შესვლის წერტილი. დამოკიდებულების სკანირება არ არის არჩევითი; ეს თქვენი აწყობის ჰიგიენის ნაწილია.

ავტომატიზაციის სტრატეგიები

  • სტატიკური დამოკიდებულების სკანირება: გამოიყენეთ ავტომატიზირებული სკანერები ცნობილი მავნე ან დაუცველი პაკეტების შესამოწმებლად აწყობის ეტაპებამდე.
  • ხელმოწერის შემოწმება: გადაამოწმეთ პაკეტის მთლიანობა ჰეშის შედარების ან ხელმოწერილი მეტამონაცემების მეშვეობით.
  • პოლიტიკის აღსრულება: დაუდასტურებელი წყაროების ინსტალაციის თავიდან აცილება.

მაგალითი pipeline კონფიგურაცია:

				
					security-scan:
  script:
    - xygeni scan --dependencies --npm --detect-malicious
    - xygeni enforce --policy supplychain.yaml

				
			

ამის თქვენს სისტემაში ინტეგრირება CI/CD უზრუნველყოფს ყველა npm ინსტალაციის –შენახვის დადასტურებას. ნებისმიერი პაკეტი, რომელიც არ აკმაყოფილებს პოლიტიკას, არის ხელმოუწერელი, უცნობი ან სარისკო, ავტომატურად იბლოკება. ეს არა მხოლოდ იცავს სამშენებლო სისტემებს, არამედ ხელს უშლის წარმოების გარემოს შემდგომი დაბინძურებას.

სანდო მიწოდების ჯაჭვის შექმნა: არასტანდარტული მიწოდების ჯაჭვიდან წარმოებამდე

უსაფრთხოება ინსტალაციის დროს არ მთავრდება. ყველა npm i -s ბრძანება ხელს უწყობს თქვენი პროგრამული უზრუნველყოფის მიწოდების ჯაჭვს და თუ ის არ არის დამოწმებული, ეს რისკია.

ნდობის სრულად გასამყარებლად:

  • გენერირება SBOMs (პროგრამული უზრუნველყოფის მასალების ჩამონათვალი): თვალყური ადევნეთ პაკეტის ყველა ვერსიას და წყაროს.
  • გამოიყენეთ ხელმოწერილი რელიზები: ავთენტურობის უზრუნველსაყოფად, გამოიყენეთ პაკეტის ხელმოწერა ან ხელმოწერის დადასტურება.
  • დადასტურება ყველა ეტაპზე: მთლიანობის შემოწმებები გამოიყენეთ არა მხოლოდ CI-ში, არამედ განლაგებისა და გაშვების დროსაც.
  • იზოლირებული კონსტრუქციები: ქსელში ან ფაილებზე არაავტორიზებული წვდომის თავიდან ასაცილებლად, ინსტალაციები გაუშვით sandbox-ებში.

API გარემოსთვის უსაფრთხო ქუქი-ფაილების კონფიგურაციის მაგალითი, რომელიც ხშირად ინფიცირებული დამოკიდებულებების მეშვეობით ვლინდება:

უსაფრთხო ვერსია, ჩამოტვირთვა, გადამოწმება და შემდეგ შესრულება

				
					# ✅ Secure cookie setup
Set-Cookie: sessionid=abc123; HttpOnly; Secure; SameSite=Strict

				
			

ამ ზომებს, ავტომატიზირებულ დამოკიდებულების სკანირებასთან ერთად, შეუძლია npm მავნე პაკეტების ნეიტრალიზება მათ მიწოდების ჯაჭვში გავრცელებამდე.

დასკვნა: დაიცავით თქვენი npm ინსტალაციები, სანამ ისინი თქვენს უსაფრთხოებას უზრუნველყოფენ

ყოველი npm i -s ან npm install –save ბრძანება არა მხოლოდ ფუნქციონალურობას, არამედ ნდობასაც შემოიტანს. დადასტურების გარეშე ნდობა რისკია.

თქვენი პროგრამული უზრუნველყოფის მიწოდების ჯაჭვის დასაცავად:

  • დამოკიდებულების ვალიდაციის ავტომატიზაცია
  • ხელმოწერისა და მთლიანობის შემოწმების აღსრულება
  • npm მავნე პაკეტების უწყვეტი სკანირება
  • დაბლოკეთ დაუდასტურებელი წყაროები ადრეულ ეტაპზე CI/CD

ქსიგენი ეხმარება DevSecOps გუნდებს მავნე npm დამოკიდებულებების აღმოჩენასა და დაბლოკვაში, პაკეტების პოლიტიკის აღსრულებასა და აწყობის მთლიანობის მონიტორინგში, რაც უზრუნველყოფს, რომ თქვენს მიერ დაინსტალირებული ინფორმაცია ზუსტად ისაა, რისი გაშვებაც გსურთ.

რადგან მიწოდების ჯაჭვის უსაფრთხოებაში პრევენცია არ არის შექმნის ნაბიჯი; ეს არის საფუძველი.

sca-tools-software-composition-analysis-tools
თქვენი პროგრამული უზრუნველყოფის რისკების პრიორიტეტიზაცია, გამოსწორება და დაცვა
მიიღეთ თქვენი უფასო ანგარიში.
საკრედიტო ბარათი არ არის საჭირო.

უზრუნველყავით თქვენი პროგრამული უზრუნველყოფის შემუშავება და მიწოდება

Xygeni Product Suite-თან ერთად