Repository-ul de pachete Python PyPI (Python Package Index) a suspendat temporar înregistrarea de noi utilizatori și crearea de noi proiecte din cauza unei încărcări masive de pachete malițioase, rezultat al unui atac automatizat. Blocarea a fost impusă după ce, pe 26 și 27 martie, au fost încărcate în depozit 566 de pachete cu cod malițios, stilizate după 16 biblioteci populare Python.
Numele pachetelor sunt create prin folosirea type squatting, adică prin atribuirea unor nume similare, diferențiate prin caractere individuale, precum temsorflow în loc de tensorflow, requyests în loc de requests, asyincio în loc de asyncio etc. În timpul acestor atacuri, infractorii se bazează pe utilizatori neatenți, care fac greșeli de tipar sau nu observă diferențele în nume când caută sau accesează link-uri din forumuri și chat-uri unde infractorii lasă instrucțiuni înșelătoare.
Pachetele malițioase se bazează pe codul bibliotecilor legitime, în care sunt incorporate modificări separate care instalează în sistem software malițios, care caută și trimite date confidențiale și fișiere ce conțin parole, chei de acces, portofele criptografice, token-uri și cookie-uri de sesiune. Codul malițios este încorporat în fișierul setup.py, care este executat în timpul instalării pachetului. În timpul activării, modificarea efectuată descarcă componentele principale malițioase din surse externe. server.
În decurs de două zile, infractorii au încărcat 29 de variante malițioase ale pachetului tensorflow, 26 pentru BeautifulSoup, 26 pentru PyGame, 15 pentru SimpleJson, 38 pentru Matplotlib, 26 pentru PyTorch, 67 pentru CustomTKInter, 28 pentru selenium, 17 pentru playwright, 15 pentru asyncio și 67 pentru requirements. De asemenea, au fost identificate cazuri de falsificare pentru bibliotecile requests, py-cord, colorama, capmonstercloudclient, pillow și bip-utils.
De asemenea, se remarcă atacul împotriva comunității Top.gg, care are 170 de mii de utilizatori. În timpul atacului, infractorul a reușit să compromită un cont GitHub al unui dezvoltator de top.gg, prin furtul cookie-urilor de browser. Atacatorul a adăugat, de asemenea, trei pachete în depozitul PyPI și a înregistrat domenii pypihosted.org și pythanhosted.org, pe care a organizat un mirror pentru distribuirea dependenței malițioase către pachete.
Printr-o breșă a contului hackuit în repo-ul GitHub al proiectului top.gg, în care se afla un wrapper Python pentru API-ul Top.gg, a fost efectuată o modificare ce adaugă fișierul requirements.txt. În acest fișier era listat un set de dependențe, printre care se afla un link malițios către o clonă infectată a pachetului „colorama”, găzduită pe un domeniu fals pypihosted.org, cu scopul ca dezvoltatorii să nu observe diferența față de domeniul legitim pythonhosted.org, de unde se face de obicei descărcarea pachetelor de pe PyPI.
Sursa: opennet.ro
