Software-ul open-source folosit de peste 23.000 de organizații, unele dintre ele în întreprinderi mari, a fost compromis cu codul de furt de acreditări după ce atacatorii au obținut acces neautorizat la un cont de întreținere, în cel mai recent atac open-source care a afectat internetul conform raportului arstechnica.com.
Un atac asupra „lanțului de aprovizionare” (supply chain attack) folosește instrumente sau servicii terțe – denumite în mod colectiv „lanț de aprovizionare” – pentru a se infiltra în sistemul sau rețeaua unei ținte. Aceste atacuri sunt uneori numite „atacuri în lanțul valoric” sau „atacuri ale terților”.
Prin natura lor, atacurile lanțului de aprovizionare sunt indirecte: vizează dependențele terțelor părți pe care se bazează țintele lor finale (deseori fără să știe). O dependență este un program sau o bucată de cod de la furnizori terți care îmbunătățește funcționalitatea unei aplicații.
Pachetul corupt, tj-actions/changed-files, face parte din tj-actions, o colecție de fișiere care este folosită de peste 23.000 de organizații. Tj-actions este una dintre multele Github Actions, o formă de platformă pentru eficientizarea software-ului disponibil pe platforma de dezvoltatori open-source. Acțiunile sunt un mijloc de bază de implementare a ceea ce este cunoscut sub numele de CI/CD, prescurtare pentru Integrare continuă și Implementare continuă (sau Livrare continuă).
Vineri sau mai devreme, codul sursă pentru toate versiunile tj-actions/changed-files a primit actualizări neautorizate care au schimbat „etichetele” pe care dezvoltatorii le folosesc pentru a face referire la anumite versiuni de cod. Etichetele indică un fișier disponibil public care copiază memoria internă a serverelor care îl rulează, caută acreditări și le scrie într-un jurnal. În consecință, multe depozite accesibile public care rulează tj-actions au ajuns să-și afișeze cele mai sensibile acreditări în jurnalele pe care oricine le-ar putea vizualiza in format text.
„Partea înfricoșătoare a acțiunilor este că pot modifica adesea codul sursă al depozitului care le folosește și să acceseze orice variabile secrete asociate unui flux de lucru”, a declarat HD Moore, fondator și CEO al runZero și expert în securitate open-source, într-un interviu. „Cea mai paranoică utilizare a acțiunilor este auditarea întregului cod sursă, apoi fixarea hash-ului specific în loc de etichetă în… fluxul de lucru, dar aceasta este o bătaie de cap.”
După cum demonstrează atacul lanțului de aprovizionare, mulți utilizatori Github nu urmau aceste bune practici. Arhivele care foloseau acțiuni tj care aveau încredere mai degrabă în etichete decât în hash-uri ale versiunilor verificate au ajuns să ruleze memory scraper/logger. Atacul reprezintă o posibilă amenințare pentru orice astfel de depozit, deoarece acreditările nu ar trebui să apară niciodată într-o formă care poate fi citită de om. Riscul este cel mai acut pentru depozitele care sunt vizibile public, deoarece acreditările sunt apoi vizibile pentru oricine.
Un întreținător tj-actions a declarat sâmbătă că atacatorul a compromis cumva o acreditare pe care @tj-actions-bot o folosește pentru a obține acces privilegiat la depozitul compromis. Responsabilul a spus că rămâne neclar cum a fost compromise acreditările. Parola folosită de bot a fost schimbată de atunci și, pentru un plus de securitate, contul este acum protejat de o cheie de acces, o formă de autentificare care, așa cum este specificat de Alianța FIDO, necesită autentificare în doi factori în mod implicit.
Oficialii Github au declarat că nu au dovezi că compania sau platforma sa a fost compromisă.
„Din abundență de precauție, am suspendat conturile de utilizator și am eliminat conținutul în conformitate cu Politicile de utilizare acceptabilă ale GitHub”, au scris oficialii. „Am restabilit contul și am restabilit conținutul după ce am confirmat că toate modificările rău intenționate au fost anulate și că sursa compromisului a fost securizată.” Ei au continuat să le reamintească utilizatorilor că ar trebui „să examineze întotdeauna GitHub Actions sau orice alt pachet pe care îl folosesc în codul lor înainte de a se actualiza la versiuni noi”.
Atacul lanțului de aprovizionare a fost observat pentru prima dată de firma de securitate StepSecurity, care a spus că a fost observat printr-o „detecție a anomaliilor când a apărut un punct final neașteptat în traficul de rețea”. Incidentul pare să înceapă în jurul orei 9:00, sâmbătă, ora Pacificului.
Într-un articol separat, cercetătorii de la firma de securitate Wiz au spus că analiza preliminară a atacului a stabilit deja că zeci de utilizatori de acțiuni tj s-au confruntat cu un rău real în atacul lanțului de aprovizionare. Cercetătorii au scris:
În timp ce desfășura amenințări legate de această activitate rău intenționată, în mai multe cazuri Wiz Threat Research a observat implementarea unui script conceput pentru a arunca secrete ca parte a execuției încărcăturii utile rău intenționate. În plus, Wiz Threat Research a identificat până acum zeci de depozite afectate de acțiunea GitHub afectată de malware, inclusiv repo-uri operate de organizații mari. În aceste depozite, sarcina utilă rău intenționată a fost executată cu succes și a provocat scurgeri de secrete în jurnalele fluxului de lucru. Unele dintre secretele scurse pe care le-am identificat până acum includ chei de acces AWS valide, tokene de acces personal GitHub (PAT), token-uri npm, chei private RSA și multe altele.
Incidentul tj-actions este cel mai recent exemplu de atac al lanțului de aprovizionare asupra unui pachet open-source utilizat pe scară largă. Anul trecut, un dezvoltator singuratic care lucra pentru Microsoft a descoperit prezența unui tip de acces backdoor care a fost instalat intenționat în xz Utils, un utilitar de comprimare a datelor open source folosit de milioane de organizații, multe dintre ele companii din Fortune 500. Dintr-un noroc, vulnerabilitatea backdoor, care le-a oferit atacatorilor posibilitatea de a se conecta la orice server cu acces privilegiat, a fost descoperită cu doar câteva săptămâni înainte de a fi programată să intre în versiunile de producție de Linux.
Orice responsabil pentru un sistem care utilizează tj-actions ar trebui să își inspecteze cu atenție sistemele pentru a verifica semnele de compromitere a acestora. Atacul lanțului de aprovizionare ar trebui, de asemenea, să servească drept imbold pentru ca administratorii să examineze orice acțiuni GitHub pe care le folosesc pentru a se asigura că folosesc hashuri criptografice, în loc de etichete, care indică codul care a fost verificat anterior. Postările de mai sus de la StepSecurity și Wiz oferă îndrumări utile, la fel ca și aceasta de la Semgrep.