Zpět na domů

Útok na litellm: krádež credentials v PyPI

Kompromitace verzí litellm 1.82.7 a 1.82.8 na PyPI zahrnuje sběr a exfiltraci credentials prostřednictvím .pth-souborů a K8s-podů. Jsou popsány mechanismy, IoC a kroky remediation. Útok souvisí s kampaní TeamPCP.

litellm pod útokem: stylér v PyPI-verzích
Advertisement 728x90

Kompromitace litellm 1.82.7/1.82.8: mechanismus krádeže credentials přes PyPI

Knihovna litellm ve verzích 1.82.7 a 1.82.8 na PyPI obsahuje škodlivý kód, který krade SSH klíče, cloudové credentials, Kubernetes tajnosti a API klíče. Útok využívá řetězec dodávek, spouští se automaticky při spuštění Python interpretu nebo importu modulu. Postihnuté jsou systémy s tranzitivními závislostmi, včetně MCP pluginů Cursor.

Objevení incidentu

Útok se projevila fork bombou v .pth souboru, která vyčerpala zdroje hostitele. Bez tohoto bugu by malware mohl fungovat skrytě. Verze byly zveřejněny 24. března 2026 v 10:39–10:52 UTC bez aktualizací na GitHub — škodlivý kód byl vložen pouze do PyPI artefaktů a obešel code review.

Výzkumníci FutureSearch si všimli absence tagů vydání. Repozitář je čistý, což je typické pro útoky na řetězec dodávek.

Google AdInline article slot

Technické detaily malwaru

Fáze 1: Sběr dat

Payload extrahuje:

  • SSH klíče a konfigurace.
  • .env soubory.
  • Credentials AWS, GCP, Azure.
  • Kubeconfig a tajnosti Kubernetes.
  • Hesla databází.
  • Historii shellu.
  • Soubory kryptoměnových peněženek.
  • Proměnné prostředí.

Provádějí se dotazy na IMDS endpoints cloudových poskytovatelů.

Fáze 2: Exfiltrace

Data se šifrují AES-256-CBC s RSA-4096 (hardcoded veřejný klíč) a odesílají na models.litellm[.]cloud — neoficiální doménu.

Google AdInline article slot

Fáze 3: Persistace

V Kubernetes malware:

  • Čte všechny tajnosti klastru prostřednictvím service account tokenu.
  • Vytváří privilegované pody alpine:latest v kube-system s montováním host FS.
  • Instaluje backdoor ~/.config/sysmon/sysmon.py.
  • Registruje systemd user service pro spuštění na všech nodech.

Verze 1.82.8 používá litellm_init.pth (34 628 bajtů), spustitelný Pythonem automaticky. 1.82.7 — obfuskovaný kód v proxy/proxy_server.py.

Kontrola a oprava

Zkontrolujte systémy příkazy:

Google AdInline article slot
# Verze litellm
pip show litellm

# Stopy v uv cache
find ~/.cache/uv -name "litellm_init.pth"

# Backdoor
ls ~/.config/sysmon/sysmon.py
ls ~/.config/systemd/user/sysmon.service

V Kubernetes: kubectl get pods -n kube-system | grep node-setup-.

Pokud jsou nainstalovány verze 1.82.7/1.82.8:

pip uninstall litellm
rm -rf ~/.cache/uv
# Nebo: pip cache purge

Odejděte na 1.82.6 (22. března, čistá podle Endor Labs). Rotujte všechny credentials: SSH klíče, cloudové tokeny, kubeconfig, API klíče, hesla DB. Zkontrolujte CI/CD pipeline a Docker image za 24–48 hodin.

Kontext kampaně TeamPCP

Útok je součástí kampaně TeamPCP (od prosince 2025):

  • března: Trivy (75/76 tagů trivy-action).
  • 21.–23. března: KICS/Checkmarx, OpenVSX, CanisterWorm v npm (64+ balíčků).
  • března: litellm.

Společné značky: AES-256 + RSA-4096, jeden veřejný klíč. GitHub Issue #24512 v litellm uzavřeno jako „not planned“ s podezřelými komentáři — možná kompromitace účtu.

Indikátory kompromitace

  • Doména C2: models.litellm[.]cloud.
  • Soubor: litellm_init.pth.
  • SHA-256: ceNa7wMJnNHy1kRnNCcwJaFjWX3pORLfMh7xGL8TUjg.
  • Backdoor: ~/.config/sysmon/sysmon.py.
  • K8s: pody node-setup-* v kube-system.

Co je důležité

  • Škodlivý kód v .pth se spustí bez import, postihuje všechny Python procesy.
  • Exfiltrace je šifrovaná, C2 — falešná doména litellm.
  • Kubernetes exploit poskytuje plný přístup k clusteru přes privilegované pody.
  • Součást řetězce TeamPCP: monitorujte Trivy, KICS, npm balíčky.
  • Návrat na 1.82.6 + úplná rotace credentials jsou povinné.

— Editorial Team

Advertisement 728x90

Číst dál