ChainDrop: NPM tārps, kas saindēja simtiem paku dažu stundu laikā

Pēdējā atjaunošana: 08/11/2026
  • 2026. gada 4. augustā pašvairojošs tārps ar nosaukumu ChainDrop četru stundu laikā apdraudēja vairāk nekā 400 npm pakotnes, tostarp keyv un flat-cache.
  • Uzbrukumā tika izmantoti nozagti GitHub akreditācijas dati, lai publicētu ļaunprātīgas versijas ar derīgu izcelsmi, padarot tās neatšķiramas no likumīgām versijām.
  • Šī datu plūsma zog akreditācijas datus, izfiltrē datus, izmantojot uz Ethereum balstītu C2, un atkārtoti publicē inficētas pakotnes, izmantojot nozagtus npm žetonus.
  • Lai mazinātu ietekmi, organizācijām ir jāpārbauda bloķēšanas faili, jāmaina akreditācijas dati un jānoņem saglabāšanas mehānismi.

npm logotips

NPM ekosistēma piedzīvo vienu no agresīvākajiem piegādes ķēdes uzbrukumiem, kāds jebkad pieredzēts. 2026. gada 4. augustā tārps ar nosaukumu ChainDrop pārlauza reģistru, mazāk nekā četru stundu laikā saindējot simtiem pakotņu. Uzbrukums izmantoja kompromitētu GitHub kontu, lai publicētu plaši izmantotu bibliotēku, piemēram, keyv un flat-cache, ļaunprātīgas versijas, kas kopā veido simtiem miljonu lejupielāžu nedēļā. Šo incidentu īpaši satraucošu padara tas, ka ļaunprātīgajām versijām bija derīga SLSA izcelsme, padarot tās pilnīgi likumīgas automatizētām drošības pārbaudēm.

Drošības pētnieki no StepSecurity, Unit 42, Sonatype un Aikido ir steigušies analizēt tārpu un ierobežot tā izplatību. Sākotnējais vilnis skāra jaredwray ekosistēmu, taču tārps ātri izplatījās uz citiem uzturētājiem un organizācijām, tostarp ServiceTitan, Qlik un Deliveroo. Saskaņā ar jaunāko atjauninājumu, apdraudēto pakotņu skaits turpina pieaugt, un ik pēc dažām minūtēm parādās jaunas infekcijas. Šī nav tikai kārtējā drukas kļūdu kampaņa; tas ir sarežģīts, pašvairojošs tārps, kas zog akreditācijas datus un izmanto tos, lai atkārtoti publicētu sevi npm reģistrā.

Ataque a la cadena de suministro ChainDrop npm
Saistītais raksts:
ChainDrop uzbrukums: piegādes ķēdes tārps apdraud vairāk nekā 435 npm paketes

Uzbrukums īsumā

npm drošības brīdinājums

Uzbrukums sākās, kad tika apdraudēts keyv un saistīto pakotņu uzturētāja Džareda Reja GitHub konts. Uzbrucējs ļaunprātīgus izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu izmaiņu dēļ.

Ļaunprātīgās pakotnes saturēja iepriekšinstalēšanas skriptu, kas izpildīja nomešanas programmu ar nosaukumu setup.mjs. Šī nomešanas programma lejupielādēja likumīgu Bun JavaScript izpildlaiku no GitHub un izmantoja to, lai palaistu 727 KB lielu maskētu lietderīgo slodzi ar nosaukumu Math_Symbol.js. Lietderīgā slodze bija pilnvērtīgs tārps, kas no upura sistēmas ieguva akreditācijas datus, tostarp npm žetonus, GitHub žetonus, mākoņa akreditācijas datus, SSH atslēgas un pat mākslīgā intelekta rīku konfigurācijas. Pēc tam tas nosūca datus komandu un vadības serverim, kas tika atrisināts, izmantojot Ethereum viedlīgumu — tehniku, kas pazīstama kā EtherHiding.

Ietekmētās pakotnes un darbības joma

npm pakotņu saraksts

Sākotnējais uzbrukuma vilnis bija vērsts pret 11 pakotnēm jaredwray ekosistēmā, tostarp keyv@6.0.0, flat-cache@6.1.24 un file-entry-cache@11.1.6. Šīs pakotnes ir pārejošas atkarības no neskaitāmiem projektiem, sākot no ESLint līdz cache-manager. Pēc tam tārps izmantoja nozagtas akreditācijas datus, lai atkārtoti publicētu vēl 433 pakotnes, pirmajās stundās palielinot kopējo pakotņu skaitu līdz 444 pakotnēm un 2,212 versijām. Vēlāki Sonatype un Aikido ziņojumi liecina, ka skaitlis ir pieaudzis vēl vairāk, un līdz brīdim, kad putekļi norima, bija ietekmētas vairāk nekā 1,000 pakotnes.

Otrais vilnis skāra tādu organizāciju kā @servicetitan, @qlik, @onereach un @deliveroo pakotnes, norādot, ka tārps ir pārvietojies no publiskiem izstrādātāju rīkiem uz korporatīvajām būvēšanas caurulēm. Uzbrucēji izveidoja arī publiskas repozitorijus ar Dune stila nosaukumiem, lai izvietotu izfiltrētos datus, un .vscode un .claude direktorijos ievietoja saglabāšanas mehānismus, lai atkārtoti inficētu izstrādātājus, kuri atvēra kompromitētās repozitorijus.

Kā darbojas ķēdes nomešanas tārps

Uzbrukuma ķēde ir meistarklase, kā nopelnīt naudu. Pirmsinstalēšanas skripts tiek palaists pirms jebkādu atkarību instalēšanas, tāpēc tārps tiek palaists ar lietotāja privilēģijām. Nomešanas rīks pārbauda, ​​vai Bun jau ir instalēts; ja nē, tas no GitHub lejupielādē likumīgu Bun bināro failu. Tas liek tīkla trafikam izskatīties nekaitīgam, jo ​​tas nāk no github.com. Otrā posma lietderīgā slodze pēc tam atdalās kā fona process un sāk savu netīro darbu.

Viena no atšķirīgākajām metodēm ir darbplūsmas atmiņas nokasīšana . Tārps palaiž Python palīgprogrammu, kas nolasa GitHub Actions Runner.Worker procesa atmiņu, meklējot darbplūsmā ievadītos noslēpumus. Tas ļauj tam iegūt OIDC marķierus un citus īslaicīgus akreditācijas datus, kas citādi pazustu, kad darbs beidzas. Tārps izmanto arī krievu lokalizācijas kill switch, tīri izejot, ja sistēmas valoda ir krievu, kas ir izplatīta taktika, lai izvairītos no mērķēšanas uz NVS valstīm.

Datu krātuvē ir iekļauts pilns npm publicēšanas dzinējs. Tas uzskaita visas pakotnes, ko upuris var publicēt, lejādē pašreizējo tarball failu, injicē ļaunprātīgo pirmsinstalēšanas skriptu un datu krātuvi un atkārtoti publicē pakotni ar uzlabotu versiju. Tas pat ģenerē savus Sigstore un SLSA izcelsmes pakotnes, radot iespaidu, ka ļaunprātīgās versijas ir veidotas kā likumīgas. Šis pašizplatīšanās mehānisms ļāva tārpam tik ātri izplatīties nesaistītās organizācijās.

Kompromisa rādītāji

Ja instalējāt kādu no ietekmētajām versijām, pieņemiet, ka jūsu sistēma ir apdraudēta. Meklējiet šīs norādes:

  • Faili ar nosaukumu setup.mjs, Math_Symbol.js vai math_init.js node_modules direktorijos.
  • Negaidīti Bun binārie faili jūsu sistēmā, it īpaši, ja nekad neesat instalējis Bun.
  • .claude/settings.json vai .vscode/tasks.json failu modifikācijas, kas atsaucas uz setup.mjs.
  • Izejošie savienojumi ar npm-cache.com vai awqhnjewqjkl.icu vai Ethereum RPC izsaukumi, lai noslēgtu līgumu ar 0xE1f2395ee43e45A1556EC6438a88c31B83493103.
  • Jaunas GitHub krātuves ar aprakstiem, piemēram, “Shai-Hulud: Here We Go Again” vai ar Kāpu tematiku saistītiem nosaukumiem.

Pārbaudiet arī pēc eksfiltrācijas instalēto marķiera monitoru: ~/.local/bin/gh-token-monitor.sh, ~/.config/gh-token-monitor/ un systemd vai LaunchAgent pakalpojumus. Tārps to instalē, lai sodītu akreditācijas datu rotāciju, aktivizējot uzbrucēja vērtumu, kad nozagtais marķieris tiek atsaukts.

Mazināšana un atveseļošanās

Ja esat ietekmēts, rīkojieties ātri. Vispirms izolējiet datoru un saglabājiet žurnālus. Pēc tam nomainiet visus sistēmā esošos akreditācijas datus, tostarp npm tokenus, GitHub PAT, mākoņa atslēgas un SSH atslēgas. Pirms rotācijas noņemiet tokenu monitoru, jo tas aktivizēsies, ja atsauksiet tokenu. Pēc tam notīriet bloķēšanas failus un piespraudiet tos zināmām derīgām versijām. Keyv, flat-cache un file-entry-cache versijām izmantojiet ignorēšanu, lai bloķētu ļaunprātīgās versijas. Visbeidzot, atkārtoti instalējiet ar –ignore-scripts, lai novērstu atlikušo instalēšanas āķu izpildi.

CI/CD cauruļvadu gadījumā pārskatiet žurnālus par visām instalācijām, kas iedarbības logā novērsa skartās versijas. Jebkuru palaisto pakotni, kas instalēja inficētu pakotni, uzskatiet par kompromitētu un nomainiet visus šim uzdevumam pieejamos noslēpumus. Veiciet arī GitHub organizāciju auditu, lai atrastu negaidītas darbplūsmas ar nosaukumu “Run Copilot” vai artefaktus ar nosaukumu “format-results”, kas liecina par tārpa slepeno kodu legalizēšanu.

Padziļināta aizsardzība ir ļoti svarīga. Izmantojiet izejošo datu atļauju sarakstus CI runners, lai bloķētu nomestājamās programmas iespēju izgūt Bun. Ieviesiet nogaidīšanas politikas, kas pieprasa, lai pakotnes pirms ieviešanas būtu dažas dienas vecas. Un nepaļaujieties tikai uz izcelsmi — tā negarantē drošību. Vislabākā aizsardzība ir samazināt instalēšanas skriptu izmantošanu un uzraudzīt anomālu uzvedību.

Turpinoties izmeklēšanai, skarto pakotņu skaits joprojām pieaug. Tārpa spēja mainīt savu C2 infrastruktūru, izmantojot vienu Ethereum darījumu, padara to īpaši noturīgu. Drošības komandām jāuzrauga viedā līguma izmaiņas un jābūt informētām par jauniem indikatoriem. npm reģistrs ir sācis ļaunprātīgo versiju noņemšanu, taču tīrīšana vēl turpinās.

Šis incidents ir skarbs atgādinājums, ka atvērtā pirmkoda ekosistēma ir tikpat droša, cik droša ir tās vājākā saite. Viens kompromitēts uzturētāja konts var izraisīt masveida piegādes ķēdes uzbrukumu. Tārps ChainDrop ir modinātājpulkstenis izstrādātājiem un organizācijām ieviest stingrākas drošības prakses, tostarp daudzfaktoru autentifikāciju, mazāko privilēģiju žetonus un nepārtrauktu atkarību uzraudzību.

Related posts: