შაი ჰულუდი - npm პაკეტები - მიწოდების ჯაჭვის შეტევა

შაი-ჰულუდი: npm პაკეტების ჭიის ახსნა

სარჩევი

აუცილებლად წასაკითხი პოსტები

საინტერესო უახლესი პოსტები

TL; DR

2025 წლის 14 სექტემბერს მკვლევარებმა დაადგინეს შაი-ჰულუდი, შიგნით დამალული თვითგამრავლებადი ჭია npm პაკეტები, რუტინული დამოკიდებულების განახლების სრულმასშტაბიან განახლებად გადაქცევა მიწოდების ჯაჭვის შეტევაპირველად შენიშნეს @ctrl/tinycolor დანიელ დოს სანტოს პერეირას პაკეტის შექმნით, Shai-Hulud აგროვებს საიდუმლოებებს, იღებს მათ GitHub-ის საცავებისა და სამუშაო პროცესების მეშვეობით და ხელახლა აქვეყნებს საკუთარ თავს რეესტრში მოპარული ავტორიზაციის მონაცემების გამოყენებით. რამდენიმე დღეში ინფიცირებული პაკეტების რაოდენობა ათეულებიდან ასობით გაიზარდა, რაც ადასტურებს, რომ შაიჰულუდი ეს არ არის უბრალოდ კიდევ ერთი ტროიანი, არამედ ჭია, რომელიც შექმნილია npm ეკოსისტემაში ავტომატურად გავრცელებისთვის.

გავლენა: ნებისმიერი დეველოპერი ან CI მორბენალი, რომელიც საჯარო npm პაკეტებს აყენებს, რისკის ქვეშაა.

დაუყოვნებელი მოქმედებები: ცნობილი ვერსიების დაბლოკვა, მხოლოდ ფაილების დაბლოკვის ინსტალაციების შეცვლა, npm და GitHub ტოკენების როტაცია, სამუშაო პროცესების აუდიტი და კომპრომეტირების ინდიკატორების (IoCs) მონიტორინგი.

რა მოხდა?

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

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

შესაძლო საწყისი ვექტორი და მიზნობრივი სერთიფიკატები

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

  • npm კონფიგურაციის ფაილები ისევე როგორც .npmrc, რომელიც ხშირად შეიცავს გამოქვეყნების ტოკენებს.
  • Გარემოს ცვლადები და კონფიგურაციები GitHub PAT-ებით და CI/CD საიდუმლოებები
  • ღრუბლოვანი მეტამონაცემების საბოლოო წერტილები (AWS, GCP, Azure), რაც გვერდითი მოძრაობის ხანმოკლე სერთიფიკატებს იძლევა.

ამიტომ, ავტორიზაციის მონაცემების მოპარვა გახდა გაშვების წერტილი. მოქმედი npm ტოკენებისა და GitHub-ის საიდუმლოებების დახმარებით, Shai-Hulud-ს შეეძლო თვითრეპლიკაცია მრავალ პაკეტსა და საცავში დამატებითი ადამიანური ძალისხმევის გარეშე.

შაი-ჰულუდის მიწოდების ჯაჭვზე თავდასხმის აღმასრულებელი დირექტორის გავლენა

შაი-ჰულუდი დღესაც აქტიურია. ეს ჭია აჩქარებს ზემოქმედების ვადებს. ის, რაც ოდესღაც ტროიანს კვირებს სჭირდებოდა, ახლა საათებში ვითარდება. შედეგად, გავრცელება უფრო სწრაფი და შეკავება უფრო რთულია. ის წინ მიიწევს შემდეგი გზებით:

  • npm-ის გამოქვეყნების ტოკენების და GitHub-ის საიდუმლოებების მოპარვა.
  • ხელახლა გამოქვეყნება სხვა npm პაკეტებში.
  • მუდმივობისთვის მავნე GitHub Actions სამუშაო პროცესების დამატება.

ვინ არის დაზარალებული:

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

ბიზნეს რისკი

ბიზნესზე ზეგავლენა სწრაფად იზრდება. მოპარულმა ტოკენებმა შეიძლება გამოიწვიოს ანგარიშის მიტაცება, პაკეტის გატაცება და ღრუბლოვანი სისტემის ბოროტად გამოყენებაც კი. გარდა ამისა, GitHub-ის სამუშაო პროცესებში მუდმივი არსებობა ართულებს მის გაწმენდას. ამიტომ, გუნდებმა შაი-ჰულუდი მიმდინარე ინციდენტად უნდა განიხილონ და არა დასრულებულად.

როგორ მუშაობს Shai-Hulud-ის მიწოდების ჯაჭვის შეტევა npm პაკეტებში

თავდამსხმელის მიზნები და მოტივი

კამპანია ოპტიმიზაციას უკეთებს სამ რამეს:

  • პირველი მიზანია, მასშტაბურად მოიპარონ ავტორიზაციის მონაცემები დეველოპერის ლეპტოპებიდან და CI მორბენლებიდან. ეს მოიცავს npm გამოქვეყნების ტოკენებს, GitHub ტოკენებს და ღრუბლოვან სერთიფიკატებს. სინამდვილეში, მრავალი ანალიზი ადასტურებს სისტემატურ საიდუმლო შეგროვებას, როგორიცაა TruffleHog-ის გაშვება და ღრუბლოვანი მეტამონაცემების საბოლოო წერტილების მოთხოვნა.
  • მეორე მიზანია, ავტომატურად გავრცელება კომპრომეტირებული მომწოდებლების გამოქვეყნების უფლებების ბოროტად გამოყენებით. შედეგად, ერთი საყრდენი სწრაფად ფართოვდება მრავალში, რადგან სხვა პაკეტების ახალი ინფიცირებული ვერსიები დამატებითი ადამიანური ძალისხმევის გარეშე ჩნდება.
  • მესამე მიზანია, საიმედოდ რჩება და გამოიყოფა GitHub ინფრასტრუქტურის მეშვეობით. თავდამსხმელები ქმნიან საჯარო რეპოს სახელწოდებით „Shai-Hulud“ ორმაგი ბაზით64. მონაცემები.jsonდა გარდა ამისა, ისინი ნერგავენ სამუშაო პროცესს, რომელიც სერიალიზაციას ახდენს ${{ toJSON(საიდუმლოებები) }} და აქვეყნებს მას სტატიკურ ვებჰუკზე.

სავარაუდო სარგებელში შედის რეესტრებსა და საწყის კოდზე ხანგრძლივი წვდომა, ღრუბლოვან ანგარიშებში სწრაფი გვერდითი გადასვლა და მიწოდების ჯაჭვის შემდგომი იარაღის გამოყენების შესაძლებლობა. საჯარო ანგარიშები აჩვენებს, რომ კერძო საცავები საჯაროდ გადაეცა... „-მიგრაცია“ სუფიქსი, რომელიც ზრდის მონაცემთა ექსპოზიციას და იმპულსს

შაი-ჰულუდის ტვირთის შიგნით: bundle.js npm პაკეტებში

შაი-ჰულუდი გემებს აგზავნის, როგორც დიდი, ვებპაკეტში შეფუთული და ძლიერ მინიფიცირებული JavaScript ფაილი (bundle.js, დაახლოებით 3–3.7 მბ) რომელიც სრულდება პოსტინსტალაცია ჩაერთე პაკეტი.jsonშესაბამისად,, ყოველი ინსტალაცია ავტომატურად ააქტიურებს დატვირთვას. ეს დიზაინი მალავს იდენტიფიკატორებს, იკუმშება მართვის ნაკადს და ყველა ლოგიკას ერთ არტეფაქტად აქცევს, რომელიც ინსტალაციის დროს სრულდება. ანალიტიკოსები მუდმივად ადასტურებენ Webpack-ის დაჯგუფებას, ფაილის უჩვეულო ზომას და ინსტალაციის დროს შესრულებას.

დაბნეულობისა და ანალიზის საწინააღმდეგო თვისებები, რომლებსაც ნიმუშებში ნახავთ:

  • მინიფიცირებული მოდულის გრაფიკი რიცხვითი მოდულის ID-ებით, იშვიათი კომენტარებით და გაბრტყელებული მართვის ნაკადით. გარდა ამისა,, ეს სტრუქტურა ხელით მიმოხილვას უკიდურესად ართულებს.
  • სტრიქონის დამალვა base64 ფენების და კონსტრუქციის დამხმარეების მეშვეობით. მაგალითად, განმეორებითი base64 კოდირება და დეკოდირება, როგორც წესი, ექსფილტრაციის რუტინების გარშემო გვხვდება.
  • დინამიური დისპეტჩერიზაცია მეშვეობით ევალება-სტილის შაბლონები და გენერირებული ფუნქციის სხეულები, რაც კოდს საშუალებას აძლევს შეცვალოს ქცევა გაშვების დროს.
  • ოპერაციული სისტემის ფილტრაცია უპირატესობა მიენიჭოს Linux-ისა და macOS-ის შესრულებას, განსაკუთრებით CI Runner-ებსა და დეველოპერულ ლეპტოპებზე.

ფუნქციური თვალსაზრისით, პაკეტი მოდულურია. ჩანაწერები აღწერს OS-ის აღმოჩენის, ფაილური სისტემის და git საიდუმლო სკანირების, ღრუბლოვანი SDK-ზე წვდომის, GitHub API ოპერაციების და გავრცელების ძრავის მოდულებს, რომელიც რედაქტირებს სხვა პაკეტებს, რომლებსაც მომვლელი ფლობს. სინამდვილეში, StepSecurity-იც და ReversingLabs-იც ხაზს უსვამენ ფუნქციას, რომელიც ავტომატურად აახლებს პაკეტებს მავნე ჰუკით.

ინსტალაციის დროის შესრულება Shai-Hulud-ში: როგორ ააქტიურებენ npm პაკეტები ჭიას

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

აღმოჩენა და მოსავლის აღება

  • დატვირთვა იწერს process.env ფაილს და სკანირებს ლოკალურ ფაილებს მაღალი ენტროპიის შემცველი საიდუმლოებებისა და ტოკენების პრეფიქსების აღმოსაჩენად. გარდა ამისა, ის აფართოებს დაფარვას TruffleHog-ის გაშვებით.
  • ის ამოწმებს ღრუბლოვან მეტამონაცემებს ხანმოკლე მონაცემების შესაგროვებლად. მაგალითად, მოუწოდებს 169.254.169.254 AWS-ზე ან metadata.google.internal GCP-ზე ხშირად გვხვდება ინფიცირებულ მასპინძლებში.
  • შესაბამისად, ნებისმიერი ნაპოვნი სერთიფიკატი დაუყოვნებლივ გამოსაყენებელი ხდება ახალი npm პაკეტების გამოსაქვეყნებლად ან GitHub-ის სამუშაო პროცესების გასააქტიურებლად.

ექსფილტრაცია

  • ჭია ქმნის ახალ GitHub რეპოს სახელწოდებით შაი-ჰულუდი და წერს ორმაგი base64-კოდირებით data.json პლატფორმის დეტალებით, გარემოს დემპებითა და საიდუმლოებებით. როგორც ჩანს, ეს ხმაურიანი ქცევა ადვილი შესამჩნევია, თუ დამცველებმა იციან, სად უნდა ეძებონ.
  • ის ასევე ნერგავს GitHub Actions სამუშაო პროცესს, ხშირად სახელწოდების ფილიალში შაი-ჰულუდი, რომელიც სერიალიზდება ${{ toJSON(secrets) }} და მონაცემებს სტატიკურ ვებჰუკზე აქვეყნებს. გარდა ამისა, ეს სამუშაო პროცესი მანამ გაგრძელდება, სანამ ვინმე აქტიურად არ წაშლის მას.

გამრავლების

  • ნებისმიერი აღმოჩენილი npm ტოკენის შემთხვევაში, payload ჩამოთვლის კომპრომეტირებული მომვლელის საკუთრებაში არსებულ ყველა პაკეტს. შემდეგ, ის იღებს თითოეულ tarball ფაილს, შეჰყავს bundle.js და ინსტალაციის შემდგომი ჩანაწერი და ხელახლა აქვეყნებს პაკეტს.
  • შედეგად, რამდენიმე საათში შეიძლება ათობით ინფიცირებული პაკეტი გამოჩნდეს, რაც ეკოსისტემაში აფეთქების რადიუსს ამრავლებს.

მდგრადობა და ექსპოზიცია

  • ჭია ინარჩუნებს მავნე სამუშაო პროცესებს და, რამდენიმე შემთხვევაში, კერძო საცავებს საჯაროდ გადასცემს... „-მიგრაცია“ სუფიქსი. საერთო ჯამში, ეს უზრუნველყოფს თავდამსხმელის პოზიციის შენარჩუნებას და მონაცემთა გაჟონვის მაქსიმიზაციას.

გასაღების ამოცნობის შენიშვნა
ეს უჩვეულო გამოყენება ${{ toJSON(secrets) }} მოქმედებების სამუშაო პროცესებში იშვიათია. აქედან გამომდინარე, გუნდებმა ეს ნადირობის დროს მაღალი სიგნალის ინდიკატორად უნდა მიიჩნიონ.

გასუფთავებული სამუშაო პროცესის ნიმუში, რომელიც უნდა მოძებნოთ

ეს უჩვეულო გამოყენება to JSON (საიდუმლოებები) მოქმედებებში ამ ინციდენტში მაღალი სიგნალის ინდიკატორია.

მაღალი დონის გავრცელების ფსევდოკოდი (უსაფრთხო, აღწერითი)

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

რატომ არის ეს ჭია პაკეტების ეკოსისტემაში

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

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

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

„როგორ მუშაობს“-ის მოტყუების ფურცელი

შაი-ჰულუდის სასიცოცხლო ციკლის შესაჯამებლად, აქ არის ერთი მინუსი:cisმისი ძირითადი ეტაპების ანალიზაცია:

  • პაკეტი პოსტინსტალაცია დამონტაჟებულია და bundle.js ახორციელებს.
  • დატვირთვა ამუშავებს გარემოს ცვლადებს, სკანირებს ფაილებს და git ისტორიას, ეშვება ტრიუფელი ღორიდა ღრუბლოვანი მეტამონაცემების სერვისებს აგზავნის შეკითხვებს. შესაბამისად, ნებისმიერი ნაპოვნი საიდუმლო მყისიერად სასარგებლო ხდება.
  • ექსფილტრაცია ორი გზით ხდება: პირველი, საჯარო საცავის შექმნით, სახელწოდებით შაი-ჰულუდი ორმაგი base64-კოდირებით data.json; მეორეც, GitHub Actions სამუშაო პროცესის დანერგვით, რომელიც პოსტებს აქვეყნებს ${{ toJSON(secrets) }} ვებჰუკისთვის.
  • ნებისმიერი მოპარული npm ტოკენის გამოყენებით, ჭია ხელახლა აქვეყნებს კომპრომეტირებული მომთხოვნის საკუთრებაში არსებულ ყველა სხვა პაკეტს იგივე მავნე ჰუკით. ამ გზით, ინფექცია სწრაფად მრავლდება.
  • და ბოლოს, თავდამსხმელი ფლობს მეტ საიდუმლოს, მეტ პაკეტს გასავრცელებლად და არსებულ GitHub ანგარიშებსა და საცავებში.

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

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

შეაჩერეთ ცუდი არტეფაქტები კარიბჭესთან

თქვენ უნდა დაასკანიროთ npm პაკეტები და tarball-ები, სანამ ისინი დეველოპერებს ან CI დავალებებამდე მიაღწევენ. დიდი ზომისაა. bundle.js ფაილები, საეჭვო პოსტინსტალაცია hooksდა დაბნელების მარკერები ადრეული საეჭვო დროშების ფუნქციას ასრულებენ. გარდა ამისა, შესვენების პერიოდების აღსრულება და მიმაგრებული ვერსიები pipelines ხელს უშლის ახალი, შეუმოწმებელი გამოშვებების ავტომატურ მოხმარებას.

ჰარდენი CI/CD ნაგულისხმევი

Guardrails in CI/CD აუცილებელია. ისინი უარყოფენ შერწყმებს ან ინსტალაციებს, რომლებიც ნერგავენ ახალ სკრიპტებს ან ბინარულ ფაილებს. ამავდროულად, ისინი ბლოკავენ სამუშაო პროცესებს, რომლებიც სერიალიზებენ საიდუმლოებებს ან ცდილობენ გარე პოსტების შექმნას. გუნდებმა ასევე უნდა მოითხოვონ მხოლოდ ფაილების დაბლოკვის ინსტალაციები (npm ci) ყველაფერში pipelines, რათა დამოკიდებულების ნაკრებები რეპროდუცირებადი და უსაფრთხო დარჩეს.

შეამცირეთ ტოკენის აფეთქების რადიუსი

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

ადრეულ ეტაპზე შეამჩნიეთ ჭიის ქცევა

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

სწრაფად შეაკეთეთ კონსტრუქციების დაშლის გარეშე

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

კომპრომისის ინდიკატორები (IoCs)

შაი-ჰულუდის ანალიზისას გუნდებმა ყურადღება უნდა მიაქციონ ორივეს სტატიკური IoC-ები ფაილებში და ქცევითი IoC-ები in pipelineს. ერთად აღებული, ეს სიგნალები ხელს უწყობს ინფექციების ადრეულ გამოვლენას და ჭიის შემდგომ გავრცელებამდე რეაგირებას.

სტატიკური IoC-ები

დაფიქსირდა შემდეგი SHA-256 დაიჯესტების შესაბამისობა bundle.js ნიმუშები:

  • 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09
  • 81d2a004a1bca6ef87a1caf7d0e0b355ad1764238e40ff6d1b1cb77ad4f595c3
  • dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c

გარდა ამისა, ყურადღება მიაქციეთ შემდეგ განმეორებად ნიმუშებს:

  • A bundle.js პაკეტის root-ზე.
  • "postinstall": "node bundle.js" შიგნით package.json.
  • დასახელებული საცავები შაი-ჰულუდი.
  • GitHub-ის სამუშაო პროცესები, რომლებიც შეიცავს ${{ toJSON(secrets) }}.

ქცევითი IoC-ები

ფაილის ხელმოწერების გარდა, ჭიის აქტივობა ქცევითაც ვლინდება. მაგალითად:

  • ერთი მომვლელის მხრიდან npm-ის მიერ მოვლენების უეცარი გამოქვეყნება.
  • ახალი სამუშაო პროცესები, რომლებიც მონაცემებს გარე საბოლოო წერტილებში გადასცემენ.
  • გამავალი POST მოთხოვნები გააქტიურდა CI მორბენლების მიერ.
  • ცოტა ხნის წინ შეიქმნა საჯარო რეპოები კოდირებული ბლობებით.

სწრაფი ნადირობა

დასკვნა: გაკვეთილები შაი-ჰულუდიდან

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

დეველოპერებისა და DevOps გუნდებისთვის გაკვეთილები ნათელია:

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

ამიტომ, Shai-Hulud-ის მსგავსი შეტევების შესაჩერებლად საჭიროა ავტომატური და მარტივად აღსასრულებელი კონტროლი. გუნდებმა ინსტალაციამდე უნდა დაასკანირონ npm პაკეტები, გამოიყენონ დაბლოკვის ფაილების აწყობა, აღმოაჩინონ უცნაური გამოქვეყნების აქტივობა და ტოკენები ხანმოკლე იყოს. ეს ნაბიჯები აღარ არის არჩევითი. ამის ნაცვლად, ისინი თანამედროვე ტექნოლოგიებში მდგრადობის საფუძველია. pipelines.

Xygeni-ში, Shai-Hulud-ის მიწოდების ჯაჭვზე თავდასხმას მთელი ღია კოდის ეკოსისტემისთვის გაფრთხილებად მივიჩნევთ. მდგრადი წინსვლის გზა მიწოდების ჯაჭვის უსაფრთხოების უშუალოდ შემუშავების პროცესში დანერგვაა, იმ ეტაპზე, სადაც კოდი, npm პაკეტები და pipelineდაკავშირება.

ქვემოთ მოცემულია Shai-Hulud-ში კომპრომეტირებულად მოხსენებული npm პაკეტებისა და ვერსიების სრული სია. გამოიყენეთ ის თქვენი დაბლოკილი ფაილების, რეესტრებისა და CI-ის შესამოწმებლად. pipelineექსპოზიციისთვის.

კომპრომეტირებული პაკეტების სია

📦 კომპრომეტირებული npm პაკეტების გადახედვა

პაკეტის სახელი მობილური გამოქვეყნების თარიღი
json-rules-engine-გამარტივებული0.2.12025-09-14T17:58:51.203Z
საჰაერო პილოტი0.8.82025-09-14T18:35:07.600Z
mcp-ცოდნის-გრაფიკი1.2.12025-09-14T18:35:09.494Z
საჰაერო მეთაური0.3.12025-09-14T18:35:09.521Z
ახტომის კარიბჭე0.0.22025-09-14T18:35:09.651Z
ტვი-კლი0.1.52025-09-14T18:35:10.996Z
@thangved/callback-window1.1.42025-09-14T20:31:38.479Z
@tnf-dev/api1.0.82025-09-14T20:31:39.547Z
@tnf-dev/js1.0.82025-09-14T20:31:41.251Z
@tnf-dev/mui1.0.82025-09-14T20:31:41.259Z
@tnf-dev/core1.0.82025-09-14T20:31:42.728Z
@teselagen/react-table6.10.202025-09-14T20:37:08.597Z
@hestjs/demo0.1.22025-09-14T20:45:52.348Z
@nexe/eslint-config0.1.12025-09-14T20:45:53.625Z
@hestjs/eslint-config0.1.22025-09-14T20:45:55.044Z
@nexe/config-manager0.1.12025-09-14T20:45:55.066Z
@nexe/logger0.1.32025-09-14T20:45:55.170Z
@hestjs/logger0.1.62025-09-14T20:45:55.197Z
@hestjs/ვალიდაცია0.1.62025-09-14T20:45:55.595Z
@hestjs/core0.2.12025-09-14T20:45:55.888Z
➡️ იხილეთ დაზიანებული პაკეტების სრული სია
პაკეტის სახელი მობილური გამოქვეყნების თარიღი
json-rules-engine-გამარტივებული0.2.12025-09-14T17:58:51.203Z
საჰაერო პილოტი0.8.82025-09-14T18:35:07.600Z
mcp-ცოდნის-გრაფიკი1.2.12025-09-14T18:35:09.494Z
საჰაერო მეთაური0.3.12025-09-14T18:35:09.521Z
ახტომის კარიბჭე0.0.22025-09-14T18:35:09.651Z
ტვი-კლი0.1.52025-09-14T18:35:10.996Z
@thangved/callback-window1.1.42025-09-14T20:31:38.479Z
@tnf-dev/api1.0.82025-09-14T20:31:39.547Z
@tnf-dev/js1.0.82025-09-14T20:31:41.251Z
@tnf-dev/mui1.0.82025-09-14T20:31:41.259Z
@tnf-dev/core1.0.82025-09-14T20:31:42.728Z
@teselagen/react-table6.10.202025-09-14T20:37:08.597Z
@hestjs/demo0.1.22025-09-14T20:45:52.348Z
@nexe/eslint-config0.1.12025-09-14T20:45:53.625Z
@hestjs/eslint-config0.1.22025-09-14T20:45:55.044Z
@nexe/config-manager0.1.12025-09-14T20:45:55.066Z
@nexe/logger0.1.32025-09-14T20:45:55.170Z
@hestjs/logger0.1.62025-09-14T20:45:55.197Z
@hestjs/ვალიდაცია0.1.62025-09-14T20:45:55.595Z
@hestjs/core0.2.12025-09-14T20:45:55.888Z
@hestjs/cqrs0.1.62025-09-14T20:45:55.966Z
@hestjs/scalar0.1.72025-09-14T20:45:56.386Z
ng2-ფაილის-ატვირთვა7.0.32025-09-15T02:44:29.555Z
კონდენსატორის შეტყობინებების დამმუშავებელი0.0.22025-09-15T04:54:48.431Z
კონდენსატორის-დანამატის-vonage1.0.22025-09-15T04:54:48.501Z
capacitor-plugin-healthapp0.0.22025-09-15T04:54:48.704Z
კონდენსატორი და Android-ის ნებართვები0.0.42025-09-15T04:54:48.753Z
voip-callkit1.0.22025-09-15T04:54:49.223Z
capacitor-plugin-ihealth1.1.82025-09-15T04:55:08.113Z
@art-ws/common2.0.222025-09-15T05:21:15.411Z
@art-ws/config-eslint2.0.42025-09-15T05:21:17.199Z
ngx-ws1.1.52025-09-15T05:21:17.514Z
@art-ws/slf2.0.152025-09-15T05:21:17.524Z
@art-ws/http-სერვერი2.0.212025-09-15T05:21:17.745Z
pm2-gelf-json1.0.42025-09-15T05:21:18.413Z
@art-ws/di2.0.282025-09-15T05:21:18.488Z
@art-ws/di-node2.0.132025-09-15T05:21:18.849Z
@art-ws/config-ts2.0.72025-09-15T05:21:19.408Z
@art-ws/db-context2.0.212025-09-15T05:21:19.814Z
@art-ws/openapi0.1.92025-09-15T05:21:19.969Z
@art-ws/web-app1.0.32025-09-15T05:21:20.383Z
@art-ws/ssl-info1.0.92025-09-15T05:21:20.927Z
sca-tools-software-composition-analysis-tools
თქვენი პროგრამული უზრუნველყოფის რისკების პრიორიტეტიზაცია, გამოსწორება და დაცვა
მიიღეთ თქვენი უფასო ანგარიში.
საკრედიტო ბარათი არ არის საჭირო.

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

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