Viermele Shai-Hulud infectează pachetele npm: o analiză detaliată a incidentului din lanțul de aprovizionare

Ultima actualizare: 09/25/2025
  • Sute de pachete npm au fost compromise de un vierme autoreplicant numit Shai-Hulud, GitHub eliminând peste 500 de versiuni alterate.
  • Malware-ul fură secrete (token-uri npm, PAT-uri GitHub, chei cloud) și republică pachetele infectate folosind drepturile de publicare ale victimelor.
  • Dovezile indică direcționarea către Linux și macOS, abuzul TruffleHog și un flux de lucru GitHub Actions care exfiltrează datele.
  • Pași imediați: rotirea token-urilor, auditarea dependențelor și a repozitoriilor GitHub, aplicarea MFA/2FA și căutarea de IoC-uri, inclusiv traficul bundle.js și webhook.site.

Atacul viermilor npm Shai-Hulud

Ceea ce a început ca o altă panica legată de lanțul de aprovizionare în lumea JavaScript a escaladat într-un incident major care afectează ecosistemul npm. Rapoartele din mai multe surse confirmă o tulpină de malware auto-propagată. urmărit ca Shai-Hulud, care compromite acreditările dezvoltatorului, expune codul și republică pachete contaminate pentru a menține infecția în desfășurare.

Deși numărătoarea diferă în funcție de sursă, consensul este clar: avem de-a face cu sute de eliberări otrăvite, inclusiv o bibliotecă utilizată pe scară largă, descărcată de milioane de ori pe săptămână. GitHub a eliminat peste 500 de versiuni compromise pentru a stopa răspândirea, iar echipele de securitate din întreaga lume îndeamnă dezvoltatorii să își rotească acreditările și să verifice depozitele și canalele de atac pentru a găsi indicii de intruziune.

Ce s-a întâmplat și de ce contează

Investigațiile indică faptul că operațiunea a început probabil cu momeli pentru recoltarea de acreditări, falsificare NPM, îndemnând administratorii să „actualizeze” setările MFA. Având acces la îndemână, actorul amenințător a implementat un vierme care rulează după instalare, caută secrete și republică versiunile infectate sub identitatea victimei - transformând administratorii de încredere în amplificatori ai atacului.

Shai-Hulud combină două idei periculoase: propagare automată și furt de secreteAbuzează de token-uri npm furate pentru a publica noi versiuni de pachete și valorifică token-uri GitHub și chei cloud (AWS, GCP, Azure) pentru a muta lateral și a exfiltra date. Această asociere supraalimentează raza de acțiune, permițând unui compromis să se extindă asupra nenumăraților utilizatori din aval.

Țintele par înclinate spre sistemele de tip Unix. Analiza observă că majoritatea Logica rău intenționată se execută pe Linux și macOS, bazat pe verificările mediului, deși faza de descoperire a secretelor (în special cu TruffleHog) poate avea loc pe scară mai largă. Această concentrare a restrâns amprenta viermelui, dar a lăsat totuși expusă o gamă largă de mașini de dezvoltator.

Pachete de la mai multe organizații notabile au fost afectate, împreună cu module comunitare populare. Într-un exemplu de mare vizibilitate, @ctrl/tinycolor pachetul — descărcat de milioane de ori pe săptămână — a fost implicat, demonstrând cât de adânc se putea pătrunde infecția în graful de dependențe.

ilustrarea compromisului pachetelor npm

Cum funcționează viermele (defecțiune tehnică)

Sarcina utilă principală este livrată ca un fișier JavaScript voluminos, denumit în mod obișnuit pachet.js (peste 3 MB în exemplele observate). Se execută prin intermediul unui hook postinstall adăugat la package.json, ceea ce înseamnă că codul malițios rulează automat imediat după ce un utilizator instalează pachetul din npm.

În interiorul fișierului bundle.js se află module pentru Interacțiune cu API-ul GitHub, SDK-uri în cloud (AWS/GCP), instrumente de asistență în rețea și rutine pentru a rula TruffleHog pentru descoperirea secretelor. Scriptul inventariază sistemul de operare, localizează un token npm și verifică dacă există un token GitHub valid; dacă nu se găsește niciunul, se blochează - altfel începe exfiltrarea și replicarea.

O ciudățenie notabilă: unele pachete infectate conțineau o arhivă numită pachet.tar în loc de convenția de denumire obișnuită, un indicator care a ajutat cercetătorii să semnaleze artefactele compromise. Analiștii au observat, de asemenea, o variantă care se executa ca un hook de preinstalare; un caz citat timpuriu a fost ngx-bootstrap 18.1.4, care ar fi putut servi drept un cap de pod inițial în răspândire.

Odată rulat, malware-ul enumeră cele mai descărcate pachete ale dezvoltatorului prin intermediul API-ului de căutare npm. despachetează fiecare tarball, elimină bundle.js, injectează o comandă postinstalare, actualizează versiunea și republică pe npm cu token-ul victimei. Aceasta transformă portofoliul dezvoltatorului într-un vehicul pentru infecții ulterioare.

Exfiltrarea secretelor și fluxurile de lucru GitHub

Pentru colectarea credențialelor, Shai-Hulud scanează pentru token-uri npm, token-uri de acces personal GitHub și chei API cloud (AWS, GCP, Azure). Apoi creează un depozit public GitHub numit „Shai‑Hulud” în contul victimei, salvând un fișier de date (de exemplu, data.json) cu secretele furate - expunându-le efectiv lumii.

În paralel, cercetătorii au observat o abordare ingenioasă a GitHub Actions: viermele creează o ramură numită „shai‑hulud” prin depozite accesibile și transmite un fișier de flux de lucru (shai-hulud-workflow.yml). Declanșat la transmiteri, fluxul de lucru colectează secrete și le transmite către infrastructura atacatorului, uneori după codificare dublă Base64 pentru a obfusca conținutul în tranzit.

Există, de asemenea, dovezi ale unui script de migrare care clone depozite private/interne de la organizațiile la care victima poate accesa, regăzduindu-le în contul utilizatorului ca oglinzi publice. Scopul pare a fi furtul automat de cod sursă din proiecte private, crescând presiunea asupra organizațiilor afectate.

Mai multe rapoarte observă artefacte de asistență AI în scripturile bash (comentarii și chiar emoji-uri), sugerând că atacatorul ar fi putut folosi un LLM pentru accelerarea dezvoltării componentelor de automatizare ale malware-ului.

Domeniu de aplicare și pachete notabile

În cadrul eliminărilor coordonate, GitHub a eliminat Peste 500 de versiuni compromise pentru a opri propagarea viermelui. Deși numărul total exact continuă să evolueze, lista acoperă numeroase ecosisteme și organizații, cu impact ulterioar asupra dezvoltatorilor care au efectuat actualizări în timpul ferestrei active.

Printre pachetele și spațiile de nume citate frecvent: @ctrl/tinycolor (milioane de descărcări săptămânale), multiple @grevă publică/* componente (cum ar fi bibliotecile commitlint și UI) și o gamă largă de module comunitare, inclusiv ngx-bootstrap, încărcare fișier ng2, ngx-toastrși multe altele. CrowdStrike a indicat că platforma sa principală a rămas neafectată și că cheile au fost rotite prompt după detectarea unor intrări malițioase în registrul public.

  • Exemple legate de wave: @ctrl/tinycolor; @crowdstrike/commitlint; @crowdstrike/foundry‑js; @crowdstrike/glide‑core; ngx‑bootstrap; ng2‑file‑upload; ngx‑toastr; @nativescript‑community/*; @teselagen/*; @things‑factory/*; și altele.
  • Cercetătorii au văzut, de asemenea, mai multe versiuni rău intenționate per pachet în unele cazuri — probabil din cauza răspândirii viermelui prin intermediul conturilor mai multor administratori din cadrul aceluiași proiect.

Răspunsul platformei și modificările de securitate

Acțiunile imediate ale GitHub au inclus eliminarea pachetelor cunoscute ca fiind defecte de la npm și blocarea încărcărilor care corespund Indicatorilor de Compromis (IoC). Compania implementează, de asemenea, controale de publicare mai stricte: 2FA obligatoriu pentru publicarea locală, token-uri granulare cu durată mai scurtă de viață (de exemplu, șapte zile) și adoptarea pe scară largă a Publicații de încredere pentru a reduce dependența de secrete de lungă durată.

Modificările viitoare vor deprecia token-urile clasice vechi și 2FA bazat pe TOTP pentru publicare, implicit pentru a interzice publicarea de token-uriși extinderea furnizorilor pentru Trusted Publishing. GitHub a semnalat o lansare treptată cu documentație și ghiduri de migrare, recunoscând că unele fluxuri de lucru vor necesita ajustări.

Echipele de informații despre amenințări și de răspuns la incidente din întreaga industrie (inclusiv Unit 42, Kaspersky, Trend Micro și altele) au îndrumări emise și detectări partajând în același timp IoC-uri cu colegi și alianțe pentru a accelera actualizările de protecție.

Cum să reduci riscul chiar acum

Acțiune rapidă, presupunând că orice mașină de dezvoltator care a instalat recent pachete npm ar fi putut divulga secrete. Prioritatea este să conține abuzuri de acreditări, oprește persistența și elimină dependențele alterate din lanțurile de compilare.

  • Rotiți imediat token-urile npm, cheile GitHub PAT/SSH și acreditările cloud (AWS/GCP/Azure); considerați toate secretele prezente pe gazdele dezvoltatorilor ca fiind compromise.
  • Auditează dependențele prin package-lock.json/yarn.lock; elimină sau fixează versiunile compromise cunoscute; reinstalează din surse curate.
  • Implementați MFA/2FA pe GitHub și npm; treceți la Trusted Publishing acolo unde este posibil pentru a elimina token-urile cu durată lungă de viață din buclă.
  • Verificați GitHub pentru depozite publice neașteptate numite „Shai‑Hulud”, ramuri sau fluxuri de lucru nefamiliare și rulări anormale de acțiuni.
  • Consolidarea CI/CD cu RBAC cu privilegii minime, semnarea/verificarea artefactelor și scanarea SCA continuă; tratarea Consumul open-source ca risc gestionat.

Sfaturi pentru vânarea amenințărilor (verificări de semnal înalt)

Căutați conexiuni de ieșire către webhook.site domenii, în special URI-ul observat în mai multe rapoarte. Pe endpoint-uri, căutați prezența pachet.js în directoare temporare sau de pachete și pentru un fișier GitHub Actions numit shai-hulud-workflow.yml.

  • Telemetrie de rețea: jurnale DNS/URL care conțin webhook.site; semnalați calea specifică bb8ca5f6‑4175‑45d2‑b042‑fc9ebb8170b7 dacă este vizibilă.
  • Telemetrie fișiere: crearea sau executarea fișierului bundle.js; prezența fișierului shai-hulud-workflow.yml pe gazdele dezvoltatorilor Linux/macOS.
  • Telemetria procesului: Invocări TruffleHog acolo unde nu este așteptat (rețineți că poate exista o utilizare legitimă în unele organizații).

Indicatori de compromis (IoC)

Indicii despre fișiere și șiruri observate în investigații includ pachet.js și shai-hulud-workflow.yml, cu șirul literal „shai‑hulud” apărând în ramuri, repozitorii și fluxuri de lucru.

  • Fișiere: bundle.js; shai-hulud-workflow.yml
  • Șiruri de caractere: shai‑hulud; package.tar
  • Hashes (selected): 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09; b74caeaa75e077c99f7d44f46daaf9796a3be43ecf24f2a1fd381844669da777; dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c; 4b2399646573bb737c4969563303d8ee2e9ddbd1b271f1ca9e35ea78062538db; C96FBBE010DD4C5BFB801780856EC228; 78E701F42B76CCDE3F2678E548886860
  • Rețea: https://webhook.site/bb8ca5f6-4175-45d2-b042-fc9ebb8170b7 (variante și subcăi observate)

Cronologie și analiză continuă

Rapoartele atribuie descoperirea inițială la mijlocul lunii septembrie 2025, cu acțiuni de izolare de vârf în jurul perioadei 16-19 septembrieGitHub și mai mulți furnizori au actualizat de atunci protecțiile, detecțiile și îndrumările. Așteptați-vă la constatări retroactive suplimentare pe măsură ce organizațiile finalizează revizuirile incidentelor și extind listele de versiuni afectate.

Unele dovezi sugerează că incidentul construit pe scurgeri secrete anterioare, subliniind modul în care token-urile cu durată lungă de viață și acreditările stocate în cache pot alimenta noi valuri de compromitere luni mai târziu. Acest lucru ar trebui să consolideze eforturile de a scurta durata de viață a token-urilor și de a adopta modele de publicare care minimizarea extinderii secrete.

Nu toate rapoartele sunt de acord în ceea ce privește totalurile exacte sau pachetele „primul în lanț”, dar imaginea generală se aliniază: a vierme npm autoreplicant că încrederea dezvoltatorilor transformată în armă și drepturile de publicare automatizate au scalat rapid - mai repede decât multe echipe ar putea detecta doar prin revizuire manuală.

Evenimentul ilustrează cât de repede se pot transforma canalele de compilare moderne în autostrăzi pentru programe malware. întărirea autentificăriiPrin eliminarea token-urilor cu viață lungă din calea atacurilor, consolidarea CI/CD și căutarea agresivă a IoC-urilor, organizațiile pot limita expunerea astăzi și pot face ca următorul val să fie mult mai dificil de executat.

Postări asemănatoare: