Zabezpečení bylo tak slabé, že ho prolomili puberťáci. Nakazili software s 95 miliony stažení, škody jsou nevratné
Skupina mladistvých hackerů infikovala klíčový AI nástroj LiteLLM přímo na úrovni distribučního kanálu. Odcizená tajemství už nelze vzít zpět.
Obsah článku
Když v březnu 2026 spadl vývojářský server kvůli nezvyklé smyčce procesů, nikdo netušil, že právě odhalil jeden z nejsofistikovanějších útoků na softwarový dodavatelský řetězec poslední doby. Za vším stála skupina TeamPCP, která se v ověřeném rozhovoru pro Forbes sama popsala jako „teenageři a mladí dospělí“. Jejich cílem byl LiteLLM, open source knihovna v Pythonu s více než 95 miliony měsíčních stažení, která slouží jako univerzální brána pro směrování požadavků mezi různými poskytovateli velkých jazykových modelů. Útočníci do ní propašovali škodlivý kód tak, že se spouštěl už při samotné instalaci balíčku. A „nevratné škody” v tomto případě nejsou nadsázka: SSH klíče, cloudové tokeny, Kubernetes secrets a proměnné prostředí, které malware odcizil, nelze „odkrást zpět”. Každý takový únik je trvalý, jedinou obranou je kompletní rotace a odvolání všeho, co bylo v napadeném prostředí dostupné.
Selhal celý systém, nebyla to jen jedna slabina
Představa, že teenageři prolomili jednu triviální chybu, je zavádějící. Ve skutečnosti šlo o kaskádu slabých míst, která na sebe navazovala jako domino. Prvním padlým kamenem byl Trivy, populární open source bezpečnostní skener od firmy Aqua Security, který české firmy i univerzity běžně používají v potrubích DevSecOps. Aqua po dřívějším bezpečnostním incidentu neprovedla atomickou rotaci všech přístupových údajů najednou. Útočník si tak podržel přístup a 19. března 2026 přepsal 76 ze 77 tagů nástroje trivy-action a všechny tagy setup-trivy ke škodlivému kódu. Později přibyl i falešný release v0.69.4 a infikovaný image na Docker Hubu.
Druhý kámen spadl u LiteLLM. Jeho CI/CD pipeline stahovala Trivy bez připnutí na konkrétní verzi, jednoduše používala aktuálně dostupný obsah. Kompromitovaný Trivy běžel v runneru ještě před samotným bezpečnostním skenem a z prostředí exfiltroval publish token pro PyPI. S ním v ruce útočníci 24. března nahráli přímo na PyPI dvě škodlivé verze: 1.82.7 a 1.82.8. Obešli přitom celý oficiální proces vydání na GitHubu.
Nejnebezpečnější byla verze 1.82.8. Ta do instalačního adresáře Pythonu podstrčila soubor litellm_init.pth, který se automaticky spustí při každém spuštění interpretu, tedy například i při pouhém spuštění příkazu pip install. Payload nečekal, až vývojář aplikaci skutečně použije.
Skoro 47 tisíc stažení za 46 minut
Rozsah dopadu vyčíslil tým FutureSearch: kompromitovaná verze LiteLLM se během pouhých 46 minut stáhla do 46 996 systémů. Z 2 337 balíčků, které na LiteLLM závisejí, mělo 88 % specifikaci závislostí nastavenou tak, že škodlivou verzi mohly automaticky stáhnout. Útok přitom vyšel najevo víceméně náhodou: FutureSearch si ho všiml až poté, co chyba v malwaru vyvolala fork bomb a shodila testovací stroj. Když vývojáři otevřeli vydání na GitHubu, útočníci ho zaplavili boty a uzavřeli přes kompromitovaný účet správce projektu.
Aqua Security ve svém vyjádření k incidentu přiznává, že jako open source projekt nemá centralizovaný seznam uživatelů a nemůže přímo obeslat všechny zasažené projekty. Komerční produkty Aqua podle dostupných informací zasaženy nebyly, ale to není totéž jako stoprocentní garance.
Peníze, žádné rebelství
TeamPCP není parta znuděných školáků. FBI ji ve svém červencovém FLASH bulletinu vede jako kyberkriminální skupinu napojenou na vydírání a spolupráci s dalšími aktéry. Mluvčí skupiny řekl Forbes, že se ke kyberzločinu obrátili kvůli nemožnosti najít placenou práci a vydělávají prodejem přístupu do sítí obětí a podílem z výkupného. Přiznal také, že k tvorbě některých komponent malwaru použil Anthropic Claude, konkrétně pro části zajišťující šíření napříč napadenými systémy.
Motivace je tedy primárně finanční. Demonstrace schopností je vedlejší produkt, nikoli cíl. A právě to dělá případ znepokojivějším: nejde o jednorázový žert, ale o monetizovanou operaci s opakovaným vzorcem.
Co dělat a proč to není jen problém „těch druhých”
Trivy v Česku doporučuje ve svých materiálech k dependency skenování Masarykova univerzita, česká firma CORE SYSTEMS ho uvádí jako standardní součást DevSecOps pipeline. Při 95 milionech měsíčních stažení LiteLLM a tisících závislých balíčků není vyloučeno, že se útok dotkl i části českých AI týmů, veřejně potvrzené české oběti ale zatím nejsou známé.
Kdo chce ověřit, zda byl zasažen:
- LiteLLM: příkaz
pip show litellm– verze 1.82.7 nebo 1.82.8 znamená okamžitý incident response, ne pouze upgrade. Hledat soubory litellm_init.pth, ~/.config/sysmon/sysmon.py, ~/.config/systemd/user/sysmon.service a Kubernetes pody node-setup-*. - Trivy: auditovat, zda organizace stáhla v0.69.4, Docker Hub image 0.69.5 nebo 0.69.6, případně používala aquasecurity/trivy-action bez SHA pinningu v období 19.–23. března 2026.
FBI doporučuje pinovat GitHub Actions na plné commit SHA, rotovat CI/CD secrets, vynucovat phishing-rezistentní MFA, zavést minimální stáří pro nově publikované balíčky a používat princip nejmenších oprávnění pro servisní účty.
Nástroje s nejširším přístupem a s nejslabší obranou
Oproti SolarWinds nebo XZ Utils se tento útok liší v jednom klíčovém ohledu: TeamPCP nemířila na jednu platformu dodavatele ani na jeden nenápadný backdoor v jedné knihovně. Zasáhla současně GitHub Actions, Docker Hub i PyPI a využila kaskádový efekt: kompromitovaný bezpečnostní skener otevřel dveře do AI nástroje, který centralizuje klíče k desítkám cloudových služeb.
Nejděsivější na celém případu nejsou útočníci. Je to fakt, že zaútočili přes nástroje, kterým firmy ze své podstaty poskytují nejširší přístup k tajemstvím, tedy bezpečnostní skenery a AI gatewaye. A obor se stále spoléhá na automatizované buildy, dlouho žijící tokeny a důvěru v tranzitivní závislosti, jako by žádný dodavatelský řetězec nikdy neselhával.