Dezvoltatorii sistemului de gestionare a conținutului liber Plone, scris în Python și JavaScript/NodeJS, au anunțat despre un incident în urma căruia a fost adăugat cod malițios în repository-ul GitHub al proiectului. Inițial, în repository au fost identificate trei modificări apărute pe 7 ianuarie (1, 2, 3), care adăugau cod malițios în fișierele JavaScript ale proiectului (1, 2, 3). Analiza incidentului a arătat că integrarea codului malițios a fost efectuată în urma compromisului contului unuia dintre dezvoltatori, token-ul de acces fiind capturat de atacatori după ce malware-ul a fost rulat pe sistemul acestuia.
Pe 14 ianuarie, contul compromis a fost blocat, iar dezvoltatorilor proiectului li s-a recomandat să analizeze commit-urile din perioada 1-14 ianuarie. Pe 27 ianuarie, s-a descoperit că commit-urile observate nu erau singurele, iar atacul a afectat cinci repository-uri ale proiectului (plone/volto, plone/mockup, plone/plone.app.mosaic, plone/critical-css-cli, plone/plonetheme.barceloneta), în care a fost integrat discret cod malițios. În cazul repository-ului plone.app.mosaic, atacatorilor le-a reușit să substituie ramura master. Atacul a fost efectuat la două luni după capturarea token-ului de acces al dezvoltatorului.
Pentru integrarea modificărilor, atacatorii au folosit operațiunea „force push” (git push cu opțiunea „—force”), care permite înlocuirea forțată a ramurii din repository-ul extern cu conținutul propriu și, astfel, rescrierea istoricului modificărilor (după înlocuire, se arată istoricul din ramura încărcată de atacatori). Pentru a preveni astfel de substituiri ale ramurilor în viitor, dezvoltatorii Plone au activat în GitHub reguli care blochează operațiunile „force push” pentru ramurile principale și etichete.
În depozitul plone.app.mosaic, pentru a zădărnici identificarea compromiterii, atacatorii au introdus un commit rău intenționat în branch-ul master, având o dată falsă — 18 decembrie, presupunând că sfera de căutare a codului malițios se va concentra pe modificările adăugate după prima lor activitate în depozit. Modificarea malițioasă a fost prezentată în commit-ul fals ca începutul dezvoltării unei noi versiuni de test, dar pe lângă schimbarea numărului versiunii în metadate (de la 4.0.0a1 la 4.0.0a2.dev0), în fișierul javascript apelat în etapa de compilare prettier.config.js a fost adăugat cod malițios. Pentru a fi ascuns la vizualizarea modificărilor în terminal, codul a fost adăugat pe o singură linie cu o operație legitimă și a fost mutat din zona vizibilă folosind spații. În interfața GitHub, acest cod nu era afișat în mod implicit și necesita apăsarea butonului „Load Diff”.

Atacul a fost mai mult axat pe dezvoltatorii proiectului decât pe utilizatori. Modificările malițioase nu au fost incluse în lansare. Codul malițios s-a activat în timpul compilării, descărcând exploatarea pentru creșterea privilegiilor, configurând auto-startul prin apelarea propriilor procese din scripturile de pornire și permițând controlul la distanță. serverulÎn plus, componenta malițioasă instalată căuta și trimitea date confidențiale, cum ar fi tokenurile de acces, profiluri de browsere și chei de criptomonede.
Sursa: opennet.ro
