Pachet npm Malițios cu Milioane de Descărcări Și-a Ascuns Payload-ul Până la Rulare
Un pachet publicat pe npm sub numele indexed-btree a trecut luni de zile drept un utilitar obișnuit de sortare. A copiat identitatea și reputația unei biblioteci legitime numite sorted-btree și, procedând astfel, a atras aproape două milioane de descărcări săptămânale — dovadă a cât de adânc pătrunsese în arborii de dependențe ai altor proiecte înainte ca cineva să observe.
Ce s-a întâmplat
Cercetătorii de la Checkmarx au descoperit că indexed-btree nu conține niciun script preinstall sau postinstall, tipul de semnal de alarmă pe care scanerele automate și verificările manuale rapide sunt antrenate să îl detecteze. Absența acestuia făcea pachetul să pară curat. Payload-ul real se află în BTree.prototype.set, o metodă de bază pe care aproape orice aplicație care folosește biblioteca ajunge să o apeleze. Abia când această metodă este invocată se activează rutina malițioasă — mult după instalare și după punctul în care majoritatea verificărilor de securitate se opresc din căutat.
Odată declanșat, primul stadiu colectează informații de bază despre gazdă — sistem de operare, arhitectură, nume de gazdă, procesor, memorie și timp de funcționare — și le raportează către infrastructura controlată de atacatori. În loc să contacteze un server de comandă și control convențional, interoghează un smart contract implementat pe rețeaua de test Ethereum Sepolia. Această alegere face operațiunea mai greu de perturbat: dacă o destinație este blocată, operatorii pot pur și simplu redirecționa contractul către una nouă. Un schimb criptografic de chei derivă apoi o cheie de decriptare și asamblează un payload de stadiul doi din datele returnate de contract. Rutinele de curățare incluse în pachet pot ulterior să șteargă fișierele instalate și să elimine declanșatorul din metoda prototip, limitând urmele lăsate în urmă.
Checkmarx a mai urmărit un grup mai larg de pachete conexe — printre care ordered-kv-index, btree-leaderboard, btree-core și altele — plus un pachet anterior, mutex-forge, legat de același smart contract. Atacatorii au susținut campania cu un istoric de commit-uri GitHub convingător, adăugând genul de activitate de rutină care face ca un pachet să treacă de o verificare superficială a încrederii.
De ce contează
Campania este un exemplu clar al unui punct orb în modul în care multe echipe verifică dependențele open-source: tratarea absenței scripturilor de instalare ca dovadă că un pachet este sigur. Acest control nu spune nimic despre comportamentul integrat în funcțiile proprii ale bibliotecii, care rulează abia atunci când codul este efectiv importat și folosit. Cu aproape două milioane de descărcări săptămânale în spatele deghizării, orice organizație care integrează utilitare pentru structuri de date în pipeline-uri de build, medii de testare sau servicii de producție are motive să verifice dacă acest pachet a ajuns și la ea.
Ce trebuie făcut
- Căutați în arborii de surse, fișierele lockfile, imaginile de build, stațiile de lucru ale dezvoltatorilor și sistemele CI numele
indexed-btreeși pachetele conexe listate mai jos. - Eliminați orice potrivire, rotiti secretele care ar fi putut fi expuse și verificați jurnalele în raport cu indicatorii de compromitere.
- Tratați „lipsa scriptului de ciclu de viață” ca necesară, dar nu suficientă — verificați ce fac efectiv funcțiile exportate ale unui pachet, nu doar ce rulează la instalare.
- Acolo unde este posibil, rulați pachetele necunoscute într-un mediu izolat și monitorizați procesele copil, modificările de sistem de fișiere și apelurile de rețea ieșite declanșate după utilizarea normală — nu doar la instalare.
- Fixați versiunile de dependențe revizuite, mențineți actualizată o listă completă a componentelor software (SBOM) și impuneți revizuire pentru pachetele noi sau modificate neașteptat.
Indicatori de compromitere: pachetele malițioase indexed-btree, ordered-kv-index, btree-leaderboard, priority-slot-queue, btree-range-store, btree-core, btree-time-index, btree-lru-cache, neighbor-key-map, sliding-score-window; pachetul conex mutex-forge; fișierul livrat sharedLoad.min.js; un smart contract Ethereum Sepolia folosit ca și canal C2, plus endpoint-urile RPC asociate, token-urile de exfiltrare Telegram și Slack, și o cheie publică X25519 codificată direct în pachet. Detalii tehnice complete, inclusiv repositătorul GitHub și adresa contractului, se găsesc în raportul sursă.
Sursă: Cyber Security News (Tushar Subhra Dutta)
