JA_NPM

Studiu de caz privind inundațiile NPM: „În vizuina iepurelui în căutarea unui ceai”

At Xygeni, în ultimul an am fost ocupați cu implementarea unui sistem cuprinzător care monitorizează registrele publice de pachete open-source pentru activități suspecte sau cod inerent rău intenționat.

Această infrastructură ne permite să analizăm în timp real toate pachetele publicate zilnic. De asemenea, ne permite să monitorizăm comportamentele anormale ale utilizatorilor.

Deși prezența codului malițios în registrele de pachete este bine cunoscută, există și alte comportamente ciudate sau neobișnuite care trec complet neobservate de utilizatorii obișnuiți ai acestor registre. Chiar și pentru cei dintre noi care le urmăresc îndeaproape, nu este ușor să găsim un motiv sau o explicație pentru un astfel de comportament.

Ceea ce caracterizează echipa Xygeni este perseverența noastră atunci când ne confruntăm cu o problemă, așa că am aprofundat acest aspect.

Totul a început cu o creștere bruscă a statisticilor

Așa cum am menționat anterior, ca parte a infrastructurii noastre, monitorizăm numeroase valori de activitate în registrele publice de pachete open-source.

În ultimele zile ale lunii martie, colega mea de muncă, Carmen, a dat semnalul de alarmă. Am început să observăm o abatere substanțială în numărul de pachete publicate pe NPM. După o analiză inițială, am constatat că această abatere se datora în principal unui număr relativ mic de utilizatori a căror rată de publicare a pachetelor crescuse brusc și vertiginos.

Acest lucru ne-a determinat să revizuim procesul nostru și datele asociate acestuia în cadrul platformei. Din fericire, analiza noastră a stabilit că datele păreau a fi corecte, dar acest lucru a fost și oarecum derutant!

În urma unei inspecții suplimentare, am constatat că aceste pachete au câteva caracteristici comune:

  • Editorii erau utilizatori nou creați, cu o vechime de cel mult o lună sau două.
  • Pachetele aveau nume aparent aleatorii, probabil generate folosind un dicționar. Putem găsi nume de pachete cu nume ciudate, cum ar fi enormous_mite-smiletea, erick-mangut94-sukiwir, exotic_reptile-appteadev or obvious_tuna-appteadvVom include o anexă cu câteva exemple de active pe care le-am găsit.
  • Conținutul acestor pachete era foarte asemănător, adesea același.

În acest context, am observat că unul dintre pachete includea un script Python, posibil din întâmplare, care pare a fi folosit pentru publicarea automată a pachetelor.

NPM

Desfăcând plasa

Activitatea de publicare pentru unele dintre aceste edituri în ultima lună s-a desfășurat conform următoarei cronologii:

 

atac npm

Iată statisticile complete legate de acest eveniment pe care le putem împărtăși:

verificare npm

Din analiza individuală a unora dintre pachetele asociate cu acești utilizatori nu a reieșit nimic relevant. Acest lucru ne-a determinat să analizăm imaginea de ansamblu a tuturor, căutând tipare care ar putea oferi indicii despre acest succes.

La urma urmei, avem o serie de pachete de analizat:

atac npm 2

Acestea sunt punctele cheie pe care le putem evidenția din analiză:

  • Multe dintre pachetele NPM sunt interconectate. Unele sunt menționate ca dependențe ale altora.
  • Deși sunt pachete ciudate și probabil nimeni nu știe de existența lor, unele au multe descărcări săptămânale. Este greu de acceptat că un utilizator obișnuit ar putea dori să descarce pachete precum 0mc03esisd. 
  • Unele au repozitorii asociate. Uneori, proprietarii acestor repozitorii par a fi conturi fictive, similare cu cele de pe npm.

Notă: Utilizatorii încarcă pachete suplimentare în ture, așadar datele furnizate pot varia ușor.

atac npm 2

Acesta este un exemplu al unuia dintre depozitele aferente. Conține codul unora dintre pachetele publicate. De asemenea, alte câteva fișiere, cum ar fi un ceai.yaml fișier.

Întâlnirea cu actorul/actorii

Este dificil de stabilit dacă este vorba despre opera unui singur autor sau a mai multor colaboratori. Cu toate acestea, avem câteva dovezi care restrâng originea acestei activități:

  • Limbă: Anumite comentarii din cod sunt în indoneziană.
atac npm 3
  • Locație: Anumiți proprietari ai depozitelor asociate indică locația lor în Indonezia.
  • Locația pe care o putem identifica prin metadatele activității de pe GitHub indică, de asemenea, Indonezia.
NPM_JA

Ceaiul de la ora cinci

Având în vedere că Indonezia a fost o colonie britanică, ar fi perfect să bem ceai aici. Totuși, în acest caz, este vorba de un tip de ceai destul de special.

Vă amintiți ceai.yaml fișierele pe care le-am văzut la început? La momentul respectiv, nu le-am afișat conținutul, dar arăta așa:

atac npm 4

Se pare că aceste fișiere au legătură cu Protocolul ceaiuluiDar ce este mai exact? Am ajuns https://tea.xyz/blog/250k-grant-for-open-source-developers, care vorbește despre scop:

Tea revoluționează lumea digitală abordând problema de lungă durată a compensațiilor inadecvate pentru dezvoltatorii open-source. Rezolvarea acestei probleme este mai urgentă ca niciodată, motiv pentru care am decis să alocăm granturi în valoare de 250 de dolari înainte de lansarea protocolului. Această etapă inițială își propune să sprijine administratorii de proiecte open-source care au un impact material asupra ecosistemului software open-source și un teaRank mai mare de 30 înaintea rețelei de testare stimulative a protocolului tea.

Conform documentelor protocolului pentru ceai: 

„Pentru ca un proiect să fie înregistrat în Protocolul Tea, este necesar un fișier tea.yaml care servește drept statut al proiectului și care reglementează numărul de contribuitori și numărul de voturi necesare pentru a realiza anumite acțiuni.”

 

După ce am accesat rețeaua de ceai, am încercat să găsim unul dintre pachetele despre care bănuim că își umflă reputația. L-am găsit:

Asta pare să explice ce se întâmplă aici: anumiți utilizatori își umflă proiectele open source cu o popularitate fictivă pentru a deturna teaRank-ul și a obține beneficiile oferite de asociația ceaiului. La urma urmei, banii sunt cea mai veche forță motrice, alături de sex. 

Concluzie și gânduri finale

Deși nu s-au găsit dovezi de cod malițios în aceste pachete NPM și probabil că nu au intenționat ca cineva să le folosească, este posibil ca acestea să încalce mai mulți Termeni de utilizare (TOS) ai NPM, GitHub sau ai asociației ceaiului. Cu toate acestea, acest lucru nu intră în sfera de aplicare a activității noastre (au fost însă notificați și vor fi luate măsurile pe care le consideră adecvate). Utilizarea abuzivă a acestor platforme ne va afecta pe noi și organizațiile noastre într-un fel sau altul.

Ceea ce este clar este că orice pachet open-source aparent inofensiv poate adăposti comportamente greu de înțeles fără informații contextuale complete.

Ca dezvoltator, mi se pare dificil să controlez manual toate pachetele open-source utilizate în aplicațiile pe care le dezvoltăm și le întreținem, cu un anumit nivel de siguranță. Fără ajutorul unui instrument care automatizează acest control, sarcina ar putea consuma nenumărate ore din partea echipelor noastre.

Există întotdeauna opțiunea de a privi în altă parte, având încredere că domeniile open-source sunt locuri sigure. Din fericire, cred că această mentalitate nu este foarte răspândită astăzi; acest caz a fost practic inofensiv, dar recent am experimentat un incident mult mai grav cu XZ Backdoor, și nu a fost singurul.

Dacă ați citit până aici, sper că v-au plăcut toate detaliile acestui eveniment curios. Nu uitați să petreceți câteva minute analizând ce poate contribui Xygeni la securitatea organizației dumneavoastră.

Anexă: Enumerați resursele conexe care vor fi incluse în articolul final

Utilizatori NPM mai relevanți în funcție de numărul de pachete publicate: vndra, wanzaty, artknight404, seblakkuah, Mikrositer, kellyman17

O mică mostră din pachetele lor conexe: mikrositer, cryndex, arts-dao, seblakkuah, vndrabnb, vndrave, depfif, depsik, depeit, depnin, Dopon, kellymanteasproject.

Câteva dintre repozitoriile GitHub conexe care conțin fișiere tea.yml:

sca-tools-software-instrumente-de-analiză-a-compoziției
Prioritizați, remediați și securizați riscurile software
Obține-ți contul gratuit.
Nu este necesar un card de credit.

Securizează-ți dezvoltarea și livrarea de software

cu suita de produse Xygeni