Deweloperzy platformy VoIP Telnyx ostrzegli użytkowników o kompromitacji pakietu telnyx w repozytorium PyPI, który notuje 756 tysięcy pobrań miesięcznie i oferuje SDK do komunikacji z API Telnyx z aplikacji napisanych w Pythonie. 27 marca napastnicy zdołali opublikować dwa złośliwe wydania telnyx 4.87.1 i 4.87.2, uzyskując dostęp do PyPI po przejęciu danych logowania osoby odpowiedzialnej. Złośliwe wersje były dystrybuowane od 6:51 do 13:13 (MSK), po czym zostały zablokowane przez administrację PyPI. Infrastruktura, API, usługi głosowe oraz platforma Telnyx nie ucierpiały.
Kompromitacja miała miejsce w trakcie szerszego ataku na łańcuch dostaw przeprowadzonego przez TeamPCP, w wyniku którego kilka dni temu zostały skompromitowane pakiety Pythona LiteLLM i Trivy, a także zintegrowano złośliwy kod w dodatku OpenVSX Checkmarx oraz wprowadzono złośliwego robaka w 68 pakietach w repozytorium NPM. Klucz RSA używany do szyfrowania wysyłanych danych pokrywał się z kluczami wykorzystywanymi w innych atakach grupy TeamPCP.
W przygotowanych przez napastników wersjach został wbudowany złośliwy kod, który został zintegrowany w pliku „_client.py” i aktywował się podczas importu modułu. Po aktywacji z serwerów napastników był pobierany plik dźwiękowy ringtone.wav dla systemów podobnych do Unix i hangup.wav dla Windows. Pliki te były pomyślnie odtwarzane jako dźwięki, ale zawierały zintegrowane w sposób steganograficzny ukryte złośliwe narzędzia.
Na platformie Windows złośliwe narzędzie było zapisywane w systemie jako „%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\msbuild.exe” i uruchamiało się przy każdym logowaniu. W macOS i Linux prowadzono wyszukiwanie i wysyłanie kluczy SSH, danych logowania, zawartości zmiennych środowiskowych, tokenów dostępu do API, parametrów połączeń z usługami chmurowymi AWS, GCP, Azure i K8s, kluczy do portfeli kryptowalut oraz haseł do baz danych itp. Wykryte dane były szyfrowane przy użyciu algorytmów AES-256-CBC + RSA-4096 i wysyłane za pomocą zapytania HTTP POST do zewnętrznego hosta.
Źródło: opennet.ru
