Repozytorium pakietów Pythona PyPI (Python Package Index) tymczasowo zablokowało rejestrację nowych użytkowników i tworzenie nowych projektów z powodu nieprzerwanego masowego ładowania złośliwych pakietów w trakcie zautomatyzowanego ataku. Blokada została wprowadzona po tym, jak 26 i 27 marca do repozytorium wgrano 566 pakietów z złośliwym kodem, stylizowanych na 16 popularnych bibliotek Pythona.
Nazwy pakietów są formułowane za pomocą type squatting, tzn. przydzielanie podobnych nazw, różniących się pojedynczymi znakami, np. temsorflow zamiast tensorflow, requyests zamiast requests, asyincio zamiast asyncio itp. W przypadku tego typu ataków przestępcy polegają na nieuważnych użytkownikach, które popełniły literówkę lub nie zauważyły różnic w nazwie podczas wyszukiwania lub klikania w linki z forów i czatów, na których przestępcy zostawiają zwodnicze instrukcje.
Złośliwe pakiety opierają się na kodzie legalnych bibliotek, w które wbudowane są pojedyncze zmiany, instalujące w systemie złośliwe oprogramowanie, które przeszukuje i przesyła poufne dane oraz pliki zawierające hasła, klucze dostępu, portfele kryptograficzne, tokeny i sesyjne ciasteczka. Złośliwy kod jest wbudowywany w plik setup.py, uruchamiany podczas instalacji pakietu. W trakcie aktywacji wprowadzone zmiany ładują podstawowe złośliwe komponenty z zewnątrz. serwera.
W ciągu dwóch dni przestępcy pobrali 29 złośliwych wariantów pakietu tensorflow, 26 — BeautifulSoup, 26 — PyGame, 15 — SimpleJson, 38 — Matplotlib, 26 — PyTorch, 67 — CustomTKInter, 28 — selenium, 17 — playwright, 15 — asyncio i 67 — requirements. Dodatkowo zidentyfikowano pojedyncze przypadki fałszywych bibliotek requests, py-cord, colorama, capmonstercloudclient, pillow oraz bip-utils.
Osobno odnotowano atak na społeczność Top.gg, liczącą 170 tysięcy użytkowników. W trakcie ataku przestępca zdołał skompromitować konto na GitHubie jednego z deweloperów top.gg poprzez kradzież ciasteczek przeglądarki. Atakujący dodał również trzy pakiety do repozytorium PyPI i zarejestrował domeny pypihosted.org oraz pythonhosted.org, na których zorganizowano lustro do rozprzestrzeniania złośliwej zależności pakietów.
Przez zhakowane konto w repozytorium GitHub projektu top.gg, w którym znajdowała się obudowa Python do API Top.gg, wprowadzono zmianę dodającą plik requirements.txt. W pliku zamieszczono listę pobieranych zależności, w której pod postacią pobierania zależności z lustra znajdował się link do złośliwego klonu pakietu „colorama”, umieszczonego na fałszywej domenie pypihosted.org, licząc, że programiści nie zauważą różnicy z legalną domeną pythonhosted.org, z której zwykle pobierane są pakiety z PyPI.
Źródło: opennet.ru
