Balíček Telnyx PyPI napaden: Další útok na dodavatelský řetězec, který jste nečekali
Dne 27. března 2026 někdo spustil pip install telnyx a jeho přihlašovací údaje byly tiše exfiltrovány na server ovládaný útočníkem. Žádná chyba. Žádné varování. Jen běžná instalace balíčku, která doručila malware přímo do produkce.
Python SDK telnyx — 742 000 stažení za poslední měsíc — byl napaden aktérem hrozeb jménem TeamPCP. Dvě škodlivé verze (4.87.1 a 4.87.2) byly nahrány na PyPI. V okamžiku, kdy jakákoli aplikace spustila import telnyx, malware se spustil.
Nebyl to izolovaný incident. Byla to pátá velká útok za devět dní od stejné skupiny. A pokud vytváříte software, který závisí na open source balíčcích — což dělají všichni — mělo by vás to držet vzhůru.
Co se stalo Telnyx
Telnyx je platforma pro cloudovou komunikaci. Jejich Python SDK se používá v telefonních aplikacích, automatizaci hovorů a komunikační infrastruktuře. Typ softwaru, který běží v produkci a často má přístup k citlivým přihlašovacím údajům.
Útočník upravil jediný soubor — telnyx/_client.py — a vložil 74 řádků škodlivého kódu. Zde je, co udělal:
Na Linuxu a macOS:
- Stáhl soubor
.wav z útočníkova serveru
- Pomocí steganografie extrahoval skrytý Python skript z audio dat
- Získal SSH klíče, cloudové přihlašovací údaje, proměnné prostředí a historii shellu
- Vše zašifroval pomocí AES-256 a RSA-4096
- Odeslal balíček na C2 server útočníka
Na Windows:
- Stáhl jiný soubor
.wav
- Dekódoval skrytý Windows spustitelný soubor
- Uložil jej jako
msbuild.exe do složky Windows Startup
- Binární soubor se tiše spouští při každém přihlášení — trvalý přístup
Triky s .wav stojí za zmínku. Payload nebyl skript ani binární soubor. Byl maskován jako platný audio soubor. Filtry obsahu, které povolují stahování .wav, by jej neoznačily. Škodlivá data byla skryta v audio rámcích, dekódována za běhu pomocí XOR. Jak poznamenal Charlie Eriksen z Aikido, TeamPCP poprvé použil tuto techniku WAV steganografie 22. března a zalíbila se jim natolik, že ji nadále nasazovali.
Pět útoků za devět dní: Kampaň TeamPCP
Telnyx nebyl začátek. Byl to poslední padlý domino. Zde je úplná časová osa, jak ji zdokumentovali Aikido a StepSecurity:
1. Trivy — 19. března
Open source skener zranitelností od Aqua Security byl napaden (CVE-2026-33634, CVSS 9.4). Každý CI/CD pipeline běžící Trivy bez připnutí verze měl exfiltrované přihlašovací údaje. Útočník přejmenoval 44 repozitářů Aqua Security na GitHub s prefixem tpcp-docs-. Tím získal TeamPCP ukradené přihlašovací údaje, které potřeboval pro vše, co následovalo.
2. CanisterWorm na npm — 20. března
Pomocí tokenů ukradených od uživatelů Trivy, TeamPCP publikoval samoreplikující se zadní vrátka — CanisterWorm — napříč 46+ npm balíčky, včetně scope jako @EmilGroup a @opengov. S jedním ukradeným npm tokenem, červ prohledal všechny publikovatelné balíčky, zvýšil verze a publikoval napadený kód napříč celým scopem za méně než 60 sekund.
3. Checkmarx GitHub Actions — 23. března
GitHub Actions kics-github-action a ast-github-action byly napadeny, spolu se dvěma OpenVSX rozšířeními. 35 tagů bylo uneseno za méně než čtyři hodiny. Payload použil novou C2 doménu napodobující značku Checkmarx.
4. LiteLLM na PyPI — 24. března
LiteLLM — zhruba 95 milionů stažení měsíčně, široce nasazený jako centralizovaná LLM brána s přístupem k přihlašovacím údajům pro OpenAI, Anthropic, AWS Bedrock a GCP VertexAI — měl napadené verze 1.82.7 a 1.82.8. Přihlašovací údaje byly ukradeny z CI/CD pipeline LiteLLM, která běžela s nepřipnutým Trivy. PyPI balíčky po zhruba třech hodinách znepřístupnil.
5. Telnyx na PyPI — 27. března
Popisovaný výše útok. Stejný veřejný klíč RSA-4096. Stejný podpis exfiltrace tpcp.tar.gz. Stejný šifrovací mechanismus. Jiný balíček, stejný scénář.
Vzor: Napadnout důvěryhodný nástroj → ukrást přihlašovací údaje jeho uživatelům → použít tyto přihlašovací údaje k napadení dalšího cíle → opakovat.
Proč útoky na dodavatelský řetězec stále fungují
Toto není nové. A to je ten problém.
- 2024: Zadní vrátka
xz-utils téměř napadla všechny Linuxové systémy na planetě prostřednictvím několik let trvající sociální inženýrské kampaně na jediného správce.
- 2025: Několik kampaní typosquattingu na PyPI cílilo na populární balíčky jako
requests, boto3 a tensorflow.
- 2026: TeamPCP provozuje vícedenní kampaň napříč více ekosystémy — PyPI, npm, GitHub Actions, rozšíření VS Code — a iteruje v reálném čase.
Důvod, proč to stále funguje, spočívá v několika nepříjemných pravdách:
1. Většina týmů nepřipíná závislosti.
Spuštění pip install --upgrade telnyx 27. března tiše stáhlo malware. Žádná značka. Žádný rozdíl. Jen nejnovější verze, protože to bylo to, co "nejnovější" ten den znamenalo.
2. Dodavatelský řetězec není v modelu hrozeb.
Bezpečnost aplikací se zaměřuje na váš kód. Bezpečnost infrastruktury se zaměřuje na vaše servery. Ale kód, který běží ve vašem prostředí, je převážně kód, který jste nenapsali. Většina bezpečnostních programů považuje registry balíčků za důvěryhodné zdroje.
3. Detekce je obtížná.
TeamPCP použil WAV steganografii, base64 kódování, XOR obfuskaci a oddělené podprocesy. Malware se spouští při importu, po sobě uklidí a nezanechává žádné artefakty na disku. Tradiční bezpečnostní skenery toto nezachytí.
4. Rozsah škod je masivní.
Jeden napadený balíček s 742 tisíci měsíčními staženími znamená tisíce potenciálně exfiltrovaných prostředí, než si kdokoli všimne. 95 milionů měsíčních stažení LiteLLM to ještě zhoršuje.
Co byste měli udělat hned teď
Pokud jste nainstalovali telnyx==4.87.1 nebo telnyx==4.87.2:
# Zkontrolujte svou verzi
pip show telnyx
# Okamžitě downgradujte
pip install "telnyx==4.87.0"
Poté otočte všechno: SSH klíče, API klíče, cloudové přihlašovací údaje, proměnné prostředí, hesla k databázím — cokoli přístupného na daném stroji. Zkontrolujte odchozí spojení na 83.142.209.203 na portu 8080 ve vašich síťových logech.
Na Windows zkontrolujte msbuild.exe v %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\ a smažte jej.
Pro všechny ostatní — strukturální opravy:
Připínejte své závislosti. Používejte soubory zámků (pip freeze, poetry.lock, package-lock.json). Nenechte se překvapit pip install --upgrade.
Povolte ověřování hashů. pip install --require-hashes zajišťuje, že nainstalujete pouze přesný artefakt, který očekáváte.
Auditujte svůj CI/CD dodavatelský řetězec. Pokud váš pipeline instaluje balíčky, spouští GitHub Actions nebo stahuje obrazy kontejnerů — to vše jsou útočné plochy. Připínejte akce na commit SHAs, nikoli na verze tagů.
Monitorujte neobvyklá síťová spojení. Odchozí HTTP na neočekávané IP adresy z vašich buildovacích nebo aplikačních serverů je červená vlajka.
Používejte nástroje pro skenování závislostí. Služby jako Aikido, StepSecurity, Socket.dev a Snyk dokáží detekovat napadené balíčky — někdy během několika hodin.
Předpokládejte, že vaše závislosti budou napadeny. Budujte svou bezpečnostní pozici na tomto předpokladu. Přístup s nejnižšími oprávněními, síťová segmentace, rotace přihlašovacích údajů a monitorování za běhu již nejsou volitelné.
Větší obrázek
TeamPCP napadl pět balíčků napříč třemi ekosystémy během devíti dnů. Používají nové techniky (WAV steganografie), rychle iterují (opravují chyby mezi 4.87.1 a 4.87.2) a řetězí přihlašovací údaje napříč nástroji. Toto není skript kiddie. Toto je provozně zralý aktér hrozeb provozující organizovanou kampaň.
Ekosystém open source je infrastruktura. Pohání vše od startupů po banky a nemocnice. A právě teď je bezpečnostní model zásadně rozbitý: jediný napadený účet správce nebo CI/CD token může před tím, než kdokoli mrkne, poslat malware milionům strojů.
Dokud registry balíčků, buildovací systémy a organizace nebudou považovat bezpečnost dodavatelského řetězce za prvořadou záležitost — nikoli za dodatečný nápad — budeme tyto příspěvky psát dál. A další balíček padne.
Reference