Odpalasz pip install litellm, idziesz po kawę, wracasz do terminala. Wszystko wygląda normalnie. Twoje klucze SSH — cyfrowe klucze-matki do twoich serwerów — już lecą na czyjąś skrzynkę.

24 marca 2026 roku dokładnie taki scenariusz rozegrał się naprawdę.

Co się stało

LiteLLM to najpopularniejszy open-source'owy proxy do LLM-ów — uniwersalny translator, który pozwala twojemu kodowi gadać z dowolnym modelem AI (Claude, GPT, Gemini) przez jeden interfejs. Około 3,4 miliona pobrań dziennie. Jeśli pracujesz z AI w Pythonie, prawie na pewno go dotykałeś.

Aktor zagrożeń o nazwie TeamPCP wrzucił dwie zatrute wersje — 1.82.7 i 1.82.8 — prosto na PyPI (Python Package Index — taki app store, z którego Python ciągnie biblioteki). Malware w środku zbierał klucze SSH, dane uwierzytelniające do chmury, tokeny API i zmienne środowiskowe. Potem próbował rozprzestrzeniać się po klastrach Kubernetes — tych sieciach kontenerów, na których stoi większość infrastruktury chmurowej.

Najpaskudniejsza część: wersja 1.82.8 użyła pliku .pth. W Pythonie pliki .pth wykonują się automatycznie przy starcie interpretera. Nie kiedy importujesz bibliotekę. Kiedy jakikolwiek proces Pythona startuje. Autouzupełnianie w twoim IDE? Skompromitowane. Odpalasz pip install coś-innego? Skompromitowane. Malware nie potrzebował twojej zgody ani uwagi.

Jak się dostali

TeamPCP nie zhakował LiteLLM bezpośrednio. Zagrali na dłuższą metę.

Najpierw wstrzyknęli backdoora do Trivy od Aqua Security — popularnego open-source'owego skanera bezpieczeństwa — zatruwając jedną z jego GitHub Actions (zautomatyzowanych skryptów, które odpalają się w pipeline'ach CI/CD — takich taśmach produkcyjnych, które budują i wysyłają kod). Skompromitowane Trivy działało wewnątrz pipeline'u CI samego LiteLLM, robiąc to co zawsze: skanując podatności. Tyle że teraz po cichu kradło jeszcze dane dostępowe do PyPI.

Z tymi skradzionymi danymi TeamPCP wrzucił złośliwe paczki bezpośrednio na PyPI. Żadnego pull requesta. Żadnego code review. Żadnych czerwonych flag. Narzędzie bezpieczeństwa stało się wektorem ataku.

Datadog Security Labs wyśledził, że to część skoordynowanej, wielotygodniowej kampanii, która trafiła też w skaner KICS od Checkmarx. TeamPCP uzbrojił narzędzia, których firmy używają, żeby się chronić.

Trzy godziny wystarczyły

Złośliwe wersje wisiały na PyPI przez mniej więcej trzy godziny — między 10:39 UTC a 16:00 UTC 24 marca. Społeczność zgłosiła problem, PyPI poddał paczkę kwarantannie. Kompromitacja nie dotknęła LiteLLM Cloud ani oficjalnych obrazów Dockera — te używają przypiętych wersji.

Ale trzy godziny przy 3,4 miliona pobrań dziennie to tysiące instalacji. Każdy, kto odpalił pip install --upgrade litellm w tym oknie — albo miał zautomatyzowany pipeline, który zrobił to za niego — został przejęty.

Co zrobić, jeśli cię to dotyczy

Jeśli instalowałeś lub aktualizowałeś LiteLLM 24 marca między 10:39–16:00 UTC, gratulacje — twój weekend właśnie się anulował:

  • Rotuj wszystko. Klucze SSH, tokeny chmurowe, klucze API, hasła do baz danych — cokolwiek, co siedziało w twoich zmiennych środowiskowych
  • Sprawdź ruch lateralny. Szczególnie wewnątrz klastrów Kubernetes. Malware aktywnie próbował się rozprzestrzeniać
  • Przypnij się do wersji 1.82.6 lub wcześniejszej, dopóki kurz całkowicie nie opadnie
  • Zaudytuj swoje CI/CD. Jeśli używasz Trivy albo Checkmarx KICS, zweryfikuj, czy twoje GitHub Actions nie zostały zmodyfikowane

Wzorzec, który powinien cię przerazić

Ten atak nie jest wyjątkowy ze względu na LiteLLM. Jest wyjątkowy ze względu na metodę. TeamPCP nie znalazł zero-daya. Nie phishował maintainera. Skompromitowali skaner bezpieczeństwa — narzędzie, które istnieje konkretnie po to, żeby takim rzeczom zapobiegać — i użyli go jako wytrycha do wszystkiego, co stoi dalej w łańcuchu.

Ataki na łańcuch dostaw — gdzie hakerzy celują w narzędzia i biblioteki, od których zależy twój kod, zamiast atakować ciebie bezpośrednio — są coraz bardziej kreatywne. Łańcuchy zaufania w open source są długie i kruche. Ufasz LiteLLM. LiteLLM ufa Trivy. Trivy ufa GitHub Action. GitHub Action ufa... komu właściwie?

Pinuj zależności. Weryfikuj checksumy. Nie rób auto-upgrade'ów na produkcji. I może zacznij traktować swój skaner bezpieczeństwa z taką samą podejrzliwością jak każdą inną zależność — bo jak widać, zasługuje na to.

LiteLLM Security Update · Analiza Snyk · Datadog Security Labs · BleepingComputer