Ktoś zatruł popularną pythonową paczkę z 97 milionami pobrań…
Wczoraj, 24 marca, na oficjalnym repozytorium PyPI pojawiła się złośliwa wersja szalenie popularnej biblioteki LiteLLM (wersje 1.82.7 oraz 1.82.8). Czym jest LiteLLM? To opensource’owa “bramka”, która ułatwia programistom łączenie się z wieloma modelami językowymi (LLM) za pomocą jednego interfejsu API. To nie jest niszowy projekt, paczka ma na liczniku ponad 97 milionów pobrań.
Wystarczyło zainstalować. Nie trzeba było nawet uruchamiać!Atakujący wykorzystali mechanizm ukrywania kodu w plikach z rozszerzeniem “.pth” (tzw. Python Startup Hooks). Wrzucony przez nich do zatrutej paczki plik “litellm_init.pth” był automatycznie wykonywany przy każdym uruchomieniu interpretera Pythona.
To oznacza, że programiści-ofiary nie musieli wcale pisać “import litellm” w swoim kodzie. Wystarczyło, że zainstalowali paczkę (np. poprzez pobranie innego projektu, który używał LiteLLM jako zależności), a ukryty złośliwy skrypt uruchamiał się w tle przy każdym wywołaniu Pythona. Złośliwy kod wykradał z systemu:
Klucze SSH, zmienne środowiskowe (a więc i klucze API), i pliki z konfiguracją Dockera.
Dane uwierzytelniające do chmur AWS, GCP, Azure oraz całe konfiguracje klastrów Kubernetes.
Klucze prywatne TLS, hasła do baz danych (PostgreSQL, MySQL, Redis) i pliki portfeli kryptowalutowych.
Historia powłoki (bash_history, zsh_history), gdzie często lądują hasła wpisywane “z palca”.
Wszystkie te dane są pakowane do archiwum tpcp.tar.gz, szyfrowane i wysyłane na serwer kontrolowany przez napastników: “models.litellm[.]cloud“. Wiecie więc już czego szukać w logach… Szacuje się, że ofiarą tego ataku mogło paść nawet 500 000 urządzeń. Ale mogło być gorzej…
Wpadka hakera zmniejszyła katastrofęCo ciekawe, atakujący popełnili głupi błąd. Jak informuje [...]
