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 Callum McMahon, wstrzyknięty kod zachował się u niego jak “fork bomba”. Złośliwy skrypt uruchamiał w tle kolejny proces Pythona, co powodowało, że ten nowy proces znowu czytał zatruty plik “.pth”, odpalając kolejnego Pythona i tak w nieskończoność. U niektórych programistów używających środowisk takich jak Cursor powodowało to natychmiastowe zużycie pamięci RAM do maksimum i zwieszkę kompa. Dzięki temu, że kod hakerów “wywalał” sprzęt, atak szybko zauważono, a paczkę usunięto z PyPI po niespełna 3 godzinach. Ale ponoć nie u wszystkich kod się zapętlał…Kto stoi za atakiem i jak tego dokonał?
A teraz najlepsze. Za atak odpowiada grupa TeamPCP, która dostała się do infrastruktury LiteLLM poprzez wcześniejsze zhackowanie …skanera podatności Trivy, którego używano w procesie CI/CD (automatyzacji budowania i testowania kodu).
To klasyczny, wręcz podręcznikowy atak na łańcuch dostaw (ang. supply-chain attack) — co więcej o tym jak łatwo było wstrzyknąć coś w kod Trivy pisaliśmy w poprzednim artykule — zrobił to bot AI, wysyłając im Pull Requesta na GitHubie…
Co robić, jak żyć?
Jeśli używasz Pythona, to:natychmiast sprawdź, czy w Twoim systemie lub kontenerach nie zainstalowała się wersja 1.82.7 lub 1.82.8 pakietu LiteLLM (pip show litellm). Szukaj też pliku “litellm_init.pth” w katalogach “site-packages” — a jak go tam znajdziesz, to usuń.
Jeśli go znajdziesz — współczujemy. Musisz założyć, że WSZYSTKIE hasła, klucze API i tokeny, które znajdowały się na tej maszynie (w tym te w plikach .env), są w rękach włamywaczy. Należy je natychmiast ubić/zrotować.

Chcesz wiedzieć jak bezpiecznie tworzyć kod aplikacji (nie tylko webowych)? To zapraszamy Cię na 2 dniowe, silnie praktyczne, niebezpiecznikowe szkolenie dla programistów “Atakowanie i Ochrona Webaplikacji”. Pokazujemy na nim najpopularniejsze błędy, jakie widzimy na testowanych przez nasz zespół bezpieczeństwa aplikacjach i uczymy wszystkiego, na co trzeba zwrócić uwagę podczas projektowania, budowy, testowania i deployowania kodu na produkcję. Najbliższe terminy znajdziesz poniżej (podaj podczas rejestracji w uwagach kod LITELLM, to zapiszemy Cię ze zniżką):
Poznań: 20-21 kwietnia 2026r. — zostało 5 wolnych miejsc
Ostatnio ktoś zarejestrował się 20 lutego 2026r. → zarejestruj się na to szkolenie
-
2444 PLN netto (do 27 marca)
2744 PLN netto (od 28 marca)
ZDALNIE: 11-12 maja 2026r. — zostało 7 wolnych miejsc
Ostatnio ktoś zarejestrował się 25 marca 2026r. → zarejestruj się na to szkolenie
-
2444 PLN netto (do 27 marca)
2744 PLN netto (od 28 marca)
Kraków: 22-23 czerwca 2026r. — zostało 8 wolnych miejsc
Ostatnio ktoś zarejestrował się 17 marca 2026r. → zarejestruj się na to szkolenie
-
2444 PLN netto (do 3 kwietnia)
2744 PLN netto (od 4 kwietnia)
Warszawa: 02-03 lipca 2026r. — zostało 9 wolnych miejsc
Ostatnio ktoś zarejestrował się 19 marca 2026r. → zarejestruj się na to szkolenie
-
2444 PLN netto (do 3 kwietnia)
2744 PLN netto (od 4 kwietnia)
PS. Badamy zainteresowanie webinarem na temat szeroko rozumianego AI i bezpieczeństwa (zarówno od strony użytkownika jak i developera). Zainteresowany? To zostaw nam maila w polu poniżej — jak cykl wystartuje, wyślemy Ci powiadomienie:
Bez obaw, podanych e-maili nikomu nie przekazujemy i wykorzystamy je wyłącznie do przypominania Ci o naszych wydarzeniach. Jeśli lubisz czytać o RODO, kliknij tutaj.
