TL; DR
მავნე npm პაკეტები შემთხვევითი მოვლენა არ არის. ისინი უწყვეტი გამოქვეყნების ოპერაციას წარმოადგენენ და დადასტურებული შემთხვევების სია ყოველ კვირას განახლდება. Across seven consecutive editions of our Malicious Code Digest, now past its 87th, Xygeni confirmed 635 მავნე პაკეტი, from 13 in a quiet week to 206 in a busy one. The weekly range is the point: this is a cadence, not an incident.
- კადენციაა პრობლემა. ერთი პაკეტის ვერსია ნულიდან ერთ კვირაში 55-ზე მეტ ვერსიამდე გაიზარდა. სხვა კლასტერმა სამ საათზე ნაკლებ დროში თითქმის 30 პაკეტის სახელი გამოაქვეყნა. ყოველკვირეული აუდიტი დროის არასწორი ერთეულია.
- ისინი CVE-ების სახით არ მოდიან. მავნე პაკეტი ლეგიტიმურ კოდში ხარვეზს არ წარმოადგენს, ამიტომ არ არსებობს არანაირი რჩევა, არც ქულა და, როგორც წესი, საერთოდ არ არსებობს იდენტიფიკატორი. დაუცველობაზე დაფუძნებული პროგრამა სტრუქტურულად ბრმაა ამის მიმართ.
- მოხსნა დაცვა არ არის. პაკეტები, როგორც წესი, რამდენიმე წუთიდან რამდენიმე საათამდეა აქტიური. თქვენი ინსტალაცია ან ამ ფანჯარაში მოხდა, ან არა.
- აღმოჩენა გამოქვეყნებისთანავე უნდა მოხდეს, ხოლო აღსრულება ინსტალაციისას. ყველაფერი, რაც ხელმოწერას, CVE-ს ან ყოველკვირეულ სკანირებას ელოდება, იმ აწყობის შემდეგ მოდის, რომელმაც ის გამოიტანა.
სია არსებობს. ეს იგივე არ არის, რაც თვალთვალი.
მავნე npm პაკეტებთან დაკავშირებით არანაირი საიდუმლო არ არსებობს. დადასტურებული შემთხვევები ყოველ კვირას ქვეყნდება, სახელდება და დოკუმენტირდება, მათ შორის Xygeni-ს საკუთარი მავნე კოდის დაიჯესტი, რომელიც ამჟამად ოთხმოცდამეშვიდე გამოცემას გადაცდა.
ხარვეზი ინფორმაცია არ არის. ეს ყურადღება და რიტმია. ყოველკვირეულად განახლებული, ყოველთვიურად წასაკითხი და კვარტალურად შესაბამისობაში მყოფი სია არის სია, რომელიც ასახავს იმას, რაც უკვე დაემართა ვინმეს.
აი, როგორ გამოიყურებოდა შვიდი კვირა, ჩვენივე დადასტურებული დასკვნების მიხედვით და არა მომწოდებლების გამოკითხვის მიხედვით.
| დაიჯესტი | დადასტურებული პაკეტები | რა გამოირჩეოდა |
|---|---|---|
| დაიჯესტი 87 | 13 | პირველი კომპოზიტორთა კლასტერი. @umschool/platform გამოქვეყნდა 999.0.0 შიდა პაკეტის რეიტინგის გასაუმჯობესებლად |
| დაიჯესტი 86 | 35 | ბეილისის კამპანია ფსევდონიმებს ცვლის. ოთხი @stellarshift იდენტური ვერსიით გამოქვეყნებული პაკეტები |
| დაიჯესტი 85 | 53 | [დაადასტურეთ გამორჩეული] |
| დაიჯესტი 84 | 34 | ბეილის იმიტაცია ოთხ სახელსა და ექვს დღეში. cloud-baileys ოთხჯერ ხელახლა გამოქვეყნდა |
| დაიჯესტი 83 | 114 | wormgpt-cliცხრა ვერსია ერთ დღეში, სახელი ნამდვილი Dark-LLM ინსტრუმენტის მიხედვით დაერქვა |
| დაიჯესტი 82 | 206 | [დაადასტურეთ გამორჩეული] |
| დაიჯესტი 81 | 180 | 17 პაკეტი, რომლებიც PayPal-ის შიდა სახელებს ასახიერებდნენ 28.0.0. zevairouter ბოლო 55 ვერსია |
მნიშვნელოვანი ნიმუში არ არის ჯამური მაჩვენებლები. მნიშვნელოვანია სიჩქარე ყოველ კვირას.
სიჩქარე მთელი შეტევაა
იმ კვირების სამი დასკვნა, რომელთაგან თითოეული მიმოხილვის გასწრების განსხვავებული გზაა.
- ვერსიის დატბორვა. ერთი npm პაკეტი,
zevairouter, ერთ კვირაში 55-ზე მეტ დადასტურებულ ვერსიას მიაღწია, რომელსაც თანმხლები პაკეტიდან კიდევ ათი დაემატა. PyPI-ზე,bingo-aiდაახლოებით 30 წუთში თითქმის 80 ვერსია გამოუშვა. არცერთი ხელით განხილვის პროცესი არ მუშაობს ასეთი სიჩქარით და არც ერთი არ ასრულებს ღამით დავალებას. - სინქრონიზებული კლასტერები. იმავე რამდენიმე წუთში გამოქვეყნდა ჩვიდმეტი პაკეტი, რომლებიც PayPal-ის შიდა სერვისის სახელებს ასახავდა, ყველა 28.0.0 ვერსიით. ეს არ არის მოცულობა, ეს არის რბოლა: არსებობს გაბერილი ვერსიის ნომერი, რათა რეიტინგში გადააჭარბოს თქვენივე გუნდების მიერ დაწერილ შიდა პაკეტს. იგივე ხრიკი რამდენიმე კვირის შემდეგ კვლავ გამოჩნდა
@umschool/platformგამოქვეყნებულია 999.0.0-ზე. - შეუპოვრობა განადგურების გზით. ბეილისის გაყალბების კამპანია კვირების განმავლობაში მიმდინარეობდა. სახელები იცვლება, ვერსიები იზრდება, ხელახლა გამოქვეყნება კი აღმოჩენის შემდეგაც გრძელდება. ოპერატორი, რომელიც ვიდეოების წაშლას ბიზნესის კეთების ხარჯად მიიჩნევს და არა შეწყვეტის მიზეზად, ისეთი ოპერატორია, რომელსაც თქვენი კვარტალური მიმოხილვა ვერასდროს დაეწევა.
და დაყოვნების დროც მოკლეა. ერთ-ერთ ბოლოდროინდელ კლასტერში, პაკეტები წაშლამდე 17 წუთიდან 13 საათამდე აქტიური იყო.
| პაკეტი | გამოქვეყნებულია (UTC) | მარცხნივ მდგომი |
|---|---|---|
moidev | 2026-08-16 16:31 | 5 სთ 58 მ |
moidevx | 2026-08-17 03:24 | 13 სთ 23 მ |
moidevz | 2026-08-26 03:38 | 12 სთ 56 მ |
moideva | 2026-08-26 18:58 | 1 სთ 33 მ |
amicat | 2026-08-28 20:48 | 17m |
bmcat | 2026-08-28 21:17 | 47m |
eyevox | 2026-08-28 21:44 | 21m |
moidevh | 2026-08-31 03:22 | 47m |
ეს რეესტრის შესრულების მეტრიკის ნაცვლად, ექსპოზიციის ფანჯარად აღიქვათ. თუ ბილდი მის დროს გაშვებული იყო, წაშლა არაფერს ცვლიდა.
რატომ ვერ ხედავს ამას თქვენი დაუცველობის პროგრამა
ეს სტრუქტურული საკითხია და ის, რაც უსაფრთხოების ჯგუფების უმეტესობას არ აქვს ასათვისებელი.
| დაუცველობა | მავნე პაკეტი | |
|---|---|---|
| წარმოშობა | შეცდომა კოდში, რომელიც კეთილსინდისიერად არის დაწერილი | ზიანის მიყენების მიზნით შექმნილი და გამოქვეყნებული არტეფაქტი |
| იდენტიფიკატორი | CVE, საკონსულტაციო რეკომენდაციით და ქულით | როგორც წესი, არცერთი. არ არის CVE, არ არის საკონსულტაციო. |
| Timeline | გამჟღავნდა, შემდეგ კი დღეების ან კვირების განმავლობაში შესწორდა | ცოცხლობს წუთებიდან საათებამდე, შემდეგ კი იხსნება |
| როგორ სწავლობ | არხი, სკანერი, საკონსულტაციო | მხოლოდ იმ შემთხვევაში, თუ რამე აკვირდებოდა რეესტრს გამოქვეყნების მომენტში |
| გამოსწორება | განაახლეთ პატჩირებული ვერსიით | არ არსებობს პატჩირებული ვერსია. ის არასდროს ყოფილა ლეგიტიმური |
| რას აკეთებს თქვენი პროგრამა | მიღება, ქულები, გრაფიკები | არაფერი, თუ ამისთვის არ აშენდა |
დაუცველობა არის კოდის ხარვეზი, რომელიც ვინმემ კეთილსინდისიერად დაწერა. მავნე პაკეტი არის თავდამსხმელის მიერ განზრახ გამოქვეყნებული არტეფაქტი, როგორც წესი, იდენტიფიკატორის, საკონსულტაციო ნიშნის გარეშე და სიცოცხლის ხანგრძლივობით, რომელიც საათებში იზომება. CVE-ს შეყვანის, სიმძიმის შეფასებისა და პატჩ ფანჯრების გარშემო აგებული ყველა პროცესი შექმნილი იყო პირველი რამისთვის და ნაგულისხმევად გამოიყენებოდა მეორეზე.
იდენტიფიკატორის არარსებობა CVE სისტემაში დაუდევრობას არ წარმოადგენს. ეს არის კატეგორია, რომელიც ისე მუშაობს, როგორც დაგეგმილია: არავინ აგზავნის შეტყობინებას არტეფაქტის წინააღმდეგ, რომლის მთელი დანიშნულება მავნე იყო და როდესაც ვინმეს ამის გაკეთება შეეძლო, პაკეტი უკვე გაქრა. რაც ნიშნავს კითხვას „ამას CVE აქვს?” იგივე პასუხს აბრუნებს როგორც სუფთა პაკეტისთვის, ასევე ერთი საათის წინ გამოქვეყნებული ავტორიზაციის მონაცემების მოპარვისთვის.
რას აკეთებენ სინამდვილეში ტვირთები ახლა
მავნე npm პაკეტების გულუბრყვილო სურათი კრიპტო მაინერია. ამჟამინდელი რეალობა კი დეველოპერების წინააღმდეგ მიმართული ავტორიზაციის მონაცემების მოპარვაა და სულ უფრო მეტად მათ მანქანებზე ხელოვნური ინტელექტის ავტორიზაციის მონაცემებს აზიანებს.
ის PhantomSync კლასტერი, რვა npm პაკეტი, გამოქვეყნებული ერთი ანგარიშის ქვეშ, ზუსტად ისე მუშაობდა, როგორც რეკლამირებული იყო, ამავდროულად მალავდა თვითგამოძახების dropper-ს, რომელიც იმპორტიდან დაახლოებით 37 წამში ჩაირთო, გაშიფრავდა ყალბი სატესტო მოწყობილობის სახით დადგმულ დატვირთვას, დააინსტალირებდა პლატფორმების სხვადასხვა ჯგუფს და გაუშვებდა საფულისა და საიდუმლოებების მომპარავ პროგრამას. გადადება, შენიღბვა, შენარჩუნება, ამოღება.
უფრო ფართო მასშტაბით, CHAINDROP ტალღა შაი-ჰულუდის ჭია 2026 წლის აგვისტოს დასაწყისში 400-ზე მეტი პაკეტი და 1,700 ვერსია გამოჩნდა, ჯამში 1.3 მილიარდი ყოველთვიური ჩამოტვირთვით. მისმა კოლექციონერმა 300-ზე მეტი სერთიფიკატის ნიმუში დაასკანირა, მათ შორის OpenAI, Anthropic და Cursor გასაღებები. დეველოპერული მანქანები ღირებული გახდა წინასწარ.cisely-ზე მითითებული მოდელის სერთიფიკატების გამო.
სახელწოდების კონვენციები ფულს მიჰყვება. ბოლოდროინდელი კლასტერები კრიპტო და DeFi SDK-ებს, გადახდის მოდულებს, WhatsApp API ბიბლიოთეკებს, AWS უტილიტებს და, ერთ შემთხვევაში, პაკეტს, რომელიც ღიად არის ბრენდირებული dark-LLM თავდამსხმელის ინსტრუმენტის მიხედვით.
რა აჩერებს სინამდვილეში მავნე npm პაკეტებს
ოთხი კონტროლი, მათი გადახდის თანმიმდევრობით.
1. აღმოჩენა გამოქვეყნებისთანავე და არა გამჟღავნებისას. Xygeni-ს მავნე პროგრამების ადრეული გაფრთხილება აანალიზებს ახლად გამოქვეყნებულ პაკეტებს npm-ში, PyPI-ში, Maven-სა და სხვა რეესტრებში მათი გამოჩენის მომენტში, ქცევითი და ანომალიების ანალიზის გამოყენებით, ხელმოწერის ან ანგარიშის ლოდინის ნაცვლად. ეს არის ვადების ერთადერთი წერტილი, რომელიც თქვენს აწყობას უსწრებს.
2. აღსრულება ინსტალაციის ადგილზე. აღმოჩენა გეუბნებათ, რომ პაკეტი მავნეა. ინსტალაციის დაბლოკვის პოლიტიკა ხელს უშლის ინსტალაციის შემდგომი სკრიპტის გაშვებას. ეს უფრო მნიშვნელოვანია ახლა, როდესაც აგენტები დამოკიდებულებებს ადამიანის არჩევის გარეშე აყენებენ.
3. ფაილების დაბლოკვა და ჰეშის დამაგრება. გამოყენება npm ci CI-ში, ვიდრე npm install, ამიტომ lockfile-ში ზუსტი დამოკიდებულების ხე იქმნება. ის ხურავს ჩანაცვლების გზას, რომელზეც typosquats და გაბერილი ვერსიებია დამოკიდებული.
4. აღმოჩენები ერთ ადგილას. მავნე პროგრამების აღმოჩენები იმავე პრიორიტეტულ რიგშია, როგორც თქვენი SCA და კოდის დასკვნები, არა ცალკეულ არხში, რომელსაც ვინმე ათვალიერებს. დადასტურებული მავნე დამოკიდებულება უნდა აღემატებოდეს საშუალო სიმძიმის CVE-ს და მხოლოდ საერთო რისკის მოდელი იძლევა ამის შედარების საშუალებას.
სიის ყურება ან მისი ავტომატიზაცია
არავის აქვს საკმარისი ყურადღება, რომ ყოველ კვირას წაიკითხოს რეესტრის არხი. სწორედ ეს არის მისი ავტომატიზაციის მიზანი.
Xygeni აანალიზებს ახლად გამოქვეყნებულ პაკეტებს npm-სა და სხვა რეესტრებში გამოქვეყნების მომენტში, აფიქსირებს დადასტურებულ მავნე პროგრამას ვერსიამდე და ათავსებს აღმოჩენას იმავე პრიორიტეტულ რიგში, როგორც ყველა სხვა პროგრამა, რომელზეც თქვენი გუნდები უკვე მუშაობენ. მავნე პროგრამების გამოვლენა შედის უფასო დეველოპერის გეგმაში, რაც არ ეხება ამ კატეგორიის უფასო ვერსიების უმეტესობას.
დაიწყეთ უფასოდ, ან წაიკითხეთ ამ კვირის მავნე კოდის დაიჯესტი პირველი.
კითხვა-პასუხი
რა არის მავნე npm პაკეტები?
npm რეესტრში გამოქვეყნებული პაკეტები, რომლებიც განზრახ შექმნილია ზიანის გამოსაწვევად: ავტორიზაციისა და საფულის ქურდები, უკანა კარები, დროპერები და დამოკიდებულების დაბნეულობის არტეფაქტები, რომლებიც შიდა ან პოპულარული პაკეტების სახელებს ამსგავსებენ.
რამდენად გავრცელებულია მავნე npm პაკეტები?
Continuously. Across seven recent editions of our Malicious Code Digest, Xygeni confirmed 635 malicious packages, ranging from roughly a dozen in a quiet week to over 200 during active campaigns. npm accounts for the overwhelming majority.
რამდენ ხანს რჩება მავნე npm პაკეტები ხელმისაწვდომი?
ხშირად წუთებიდან საათებამდე. ეს ფანჯარაა მნიშვნელოვანი, რადგან მასში გაშვებული ბილდი უკვე დაზარალებულია, მიუხედავად იმისა, თუ რამდენად სწრაფად წაიშლება პაკეტი შემდგომში.
მავნე npm პაკეტები იღებენ CVE-ებს?
როგორც წესი, არა. ეს არის თავდამსხმელის მიერ გამოქვეყნებული არტეფაქტები და არა ლეგიტიმური კოდის ხარვეზები, ხოლო 2026 წლის თვალყურის დევნებულ კამპანიებს აქტიური ექსპლუატაციის დროს არ მიუღიათ CVE მინიჭებები.
როგორ შევამოწმო, არის თუ არა პაკეტი მავნე ინსტალაციამდე?
გამოიყენეთ ისეთი ინსტრუმენტი, რომელიც პაკეტებს გამოქვეყნებისთანავე აანალიზებს და არა ისეთი ინსტრუმენტი, რომელიც ამოწმებს ცნობილი „არასწორი“ პაკეტების სიას, გადაამოწმეთ გამომცემელი და ვერსიების ისტორია, ეჭვი შეიტანეთ უჩვეულოდ მაღალ ვერსიების რიცხვებსა და ახალ ანგარიშებში და ინსტალაციის დროს განახორციელეთ პოლიტიკა მიმოხილვაზე დაყრდნობის ნაცვლად.
რა არის დამოკიდებულების დაბნეულობა?
შიდა პაკეტის სახელით საჯარო პაკეტის გამოქვეყნება, როგორც წესი, გაბერილი ვერსიით, რათა რეზოლუტორი თავდამსხმელის ასლს ანიჭებს უპირატესობას. PayPal-ის სახელის კლასტერი 28.0.0 ვერსიაში სახელმძღვანელოს მაგალითია.







