MCP servery jako nová útočná plocha: bezpečnost a governance
Od tool poisoningu po kampaň Deadbugz: co se s MCP servery skutečně stalo, co řeší specifikace 2026-07-28 a šest opatření, která musí zavést firma sama.

Shrnutí
MCP server je kód třetí strany, který běží s oprávněními vývojáře nebo agenta a jehož textové popisy nástrojů čte model jako instrukce. Od dubna 2025 se nashromáždila řada zdokumentovaných útoků – od tool poisoningu přes kritickou zranitelnost CVE-2025-6514 (CVSS 9.6) až po kampaň Deadbugz ze srpna 2026. Specifikace z 28. července 2026 zpřísnila autorizaci, ale problém škodlivého nebo napadeného serveru neřeší. To musí pokrýt firemní governance: inventura, allowlist vynucený na klientovi, úzké tokeny, izolace a logování.
Kde je MCP v říjnu 2026
Model Context Protocol přestal být projektem jedné firmy. Anthropic ho 9. prosince 2025 předal nově založené Agentic AI Foundation pod Linux Foundation, kterou spoluzaložil s firmami Block a OpenAI a kterou podpořily Google, Microsoft, AWS, Cloudflare a Bloomberg. V téže zprávě uvedl více než 10 000 aktivních veřejných MCP serverů a přes 97 milionů stažení SDK měsíčně.
O necelý rok později je měřítko jiné. Podle oznámení specifikace 2026-07-28 se SDK první úrovně podpory blíží půl miliardě stažení měsíčně. MCP podporují běžné vývojářské nástroje i chatovací klienti, takže otázka pro firmu nezní, zda ho zaměstnanci používají, ale kolik serverů mají připojených a kdo o nich ví.
Co změnila specifikace 2026-07-28
Z bezpečnostního pohledu jsou v seznamu změn podstatné tyto body:
- Bezstavový protokol. Zmizel úvodní handshake i hlavička
Mcp-Session-Id. Povinné hlavičkyMcp-MethodaMcp-Nameumožňují gateway směrovat a filtrovat požadavky bez parsování těla. - Ochrana proti záměně autorizačního serveru. Klient musí parametr
iss(RFC 9207), je-li v odpovědi přítomen, ověřit dříve, než vymění autorizační kód za token. - Přihlašovací údaje vázané na vydavatele. Klient je nesmí použít u jiného autorizačního serveru.
- Dynamic Client Registration je zastaralá. Nahrazují ji Client ID Metadata Documents; DCR zůstává kvůli zpětné kompatibilitě.
- Zastaralé funkce. Roots, Sampling a Logging a také starý transport HTTP+SSE jsou označeny k odstranění, s minimálně dvanáctiměsíční lhůtou.
Pro firmy s centrální správou identit je důležitější rozšíření Enterprise-Managed Authorization, stabilní od 18. června 2026. O přístupu k MCP serveru rozhoduje firemní identity provider, nikoli jednotlivý uživatel v OAuth dialogu. Podle oznámení ho zatím podporují klienti Anthropic a Visual Studio Code a na straně identity providera Okta. Kdo používá jiného poskytovatele identit, musí si podporu ověřit.
Čtyři třídy rizik, které se opakují
Projekt OWASP MCP Top 10 je zatím ve stavu beta, ale jeho kategorie dobře odpovídají tomu, co se skutečně stalo. Pro rozhodování stačí čtyři skupiny.
| Riziko | Jak vypadá v praxi | Kategorie OWASP |
|---|---|---|
| Otrávené popisy nástrojů | Server vloží do popisu nástroje skryté instrukce pro model, případně popis změní až po schválení | MCP03 Tool Poisoning |
| Nepřímý prompt injection | Instrukce přijdou v datech, která agent čte – v issue, e-mailu, dokumentu | MCP06 Prompt Injection via Contextual Payloads |
| Dodavatelský řetězec | Škodlivý nebo podvržený balíček, zranitelnost v pomocné knihovně | MCP04 Software Supply Chain Attacks |
| Příliš široká oprávnění a nulový přehled | Token s přístupem ke všemu, servery, o kterých bezpečnostní tým neví | MCP01, MCP02, MCP08, MCP09 |
Proč tu nestačí klasický pohled na závislosti
Knihovna dělá to, co je v jejím kódu. MCP server navíc dodává text, který model interpretuje. Popis nástroje, chybová hláška i vrácená data mohou změnit chování agenta, aniž by se změnil jediný řádek kódu na vaší straně. Kontrola kódu serveru je proto nutná, ale nedostatečná.
Co se skutečně stalo: ověřené případy
Tool poisoning a „rug pull“ (duben 2025)
Invariant Labs 1. dubna 2025 ukázali, že nevinně vypadající nástroj add se skrytými instrukcemi v popisu přiměl agenta v editoru Cursor odeslat soubor ~/.cursor/mcp.json a SSH klíče. Popsali i variantu, kdy server popis nástroje změní až poté, co ho uživatel schválil.
GitHub MCP a únik z privátních repozitářů (květen 2025)
Titíž autoři 26. května 2025 předvedli útok, kde stačilo založit issue ve veřejném repozitáři. Agent, který issue četl, podle vložených instrukcí vytáhl data z privátních repozitářů a zveřejnil je v pull requestu. Autoři výslovně uvádějí, že nejde o chybu v kódu serveru, ale o architektonický problém na úrovni agenta. Záplata tedy neexistuje; pomáhá jen omezení tokenu.
mcp-remote: CVE-2025-6514 (červenec 2025)
JFrog 9. července 2025 zveřejnil zranitelnost v proxy mcp-remote ve verzích 0.0.5 až 0.1.15. Škodlivý server vrátil upravenou adresu authorization_endpoint a na Windows tím dosáhl spuštění libovolného příkazu na stanici vývojáře. Opravu přinesla verze 0.1.16. Stačilo se připojit k nedůvěryhodnému serveru.
postmark-mcp: první zdokumentovaný škodlivý server (září 2025)
Balíček postmark-mcp na npm se vydával za oficiální integraci. Verze 1.0.16 ze 17. září 2025 přidala jediný řádek, který každý odeslaný e-mail posílal ve skryté kopii na adresu útočníka. Podle společnosti Koi Security měl balíček 1 643 stažení. Podle článku šlo jinak o kopii původní knihovny a škodlivý řádek přibyl až v této verzi, takže jednorázová kontrola při zavedení by nic neodhalila.
Spouštění příkazů přes STDIO (duben 2026)
OX Security 15. dubna 2026 popsala systémový problém: aplikace, které uživateli dovolí zadat konfiguraci MCP serveru s transportem STDIO, tím často umožní spustit libovolný příkaz. Postiženy byly mimo jiné LiteLLM, Flowise, Windsurf nebo LangFlow. The Register uvádí čísla výzkumníků – až 200 000 ohrožených serverů, 150 milionů stažení dotčených balíčků, deset CVE s vysokou nebo kritickou závažností a úspěšné otrávení devíti z jedenácti testovaných MCP marketplace. Anthropic podle téhož článku změnu architektury odmítl s tím, že jde o očekávané chování.
Čísla pocházejí od autorů výzkumu a je vhodné je číst jako horní odhad. Spor, zda je chyba v protokolu, nebo v aplikacích nad ním, na praktickém závěru nic nemění: konfigurace MCP serveru je spustitelný vstup a tak se s ní musí zacházet.
Deadbugz (srpen 2026)
Pillar Security 12. srpna 2026 popsala kampaň, při níž jeden účet 10. srpna během 74 minut otevřel 23 pull requestů do nesouvisejících projektů. Sedmnáct z nich přidávalo do konfigurace MCP vzdálený server, čtyři další spouštěly skrytý lokální skript. Server nabízel dva neškodné nástroje – formátování a shrnutí textu. Po třech voláních server změnil vracené instrukce a navedl agenta k hledání SSH klíčů, AWS přihlašovacích údajů, historie shellu a konfigurace Kubernetes.
Soubor s konfigurací MCP je útočná plocha
Pull request, který mění .mcp.json nebo obdobný soubor v repozitáři, přidává kód, který se spustí u každého, kdo projekt otevře v agentním nástroji. Review takové změny zaslouží stejnou pozornost jako změna CI pipeline.
Co specifikace řeší a co ne
Oficiální Security Best Practices jsou dobrý podklad pro posuzování serverů. Server nesmí přijmout token, který nebyl vydán výslovně pro něj, a nesmí ho předávat dál (token passthrough). Klient, který nabízí instalaci lokálního serveru na jedno kliknutí, musí před spuštěním zobrazit přesný příkaz bez zkrácení a nesmí otevírat autorizační URL přes shell – to je přímá reakce na chyby typu CVE-2025-6514. Dokument doporučuje i postupné rozšiřování scope místo jednoho širokého tokenu.
Specifikace ale definuje, jak mají strany komunikovat. Neříká, zda je server důvěryhodný, a neumí zabránit tomu, aby model poslechl instrukci ukrytou v datech. Kategorie tool poisoning a prompt injection zůstávají na provozovateli.
OAuth odpovídá na otázku, kdo se smí připojit. Neodpovídá na otázku, co vám připojený server pošle do kontextu.
Governance: šest opatření v pořadí, v jakém dávají smysl
1. Inventura
Cloud Security Alliance ve výzkumné poznámce ze 4. května 2026 doporučuje jako okamžitý krok soupis všech MCP serverů v organizaci včetně těch, které přišly s vývojářskými nástroji. Zdrojem jsou konfigurační soubory na stanicích, soubory .mcp.json v repozitářích a telemetrie klientů.
2. Allowlist vynucený na klientovi
Seznam schválených serverů na wiki nikoho nezastaví. Vynucení musí být v nástroji a nesmí jít obejít přejmenováním. Na tom se liší jednotlivé produkty, a proto je nutné číst dokumentaci, ne jen název funkce.
Dokumentace GitHub Copilot uvádí, že režim „Registry only“ porovnává pouze název či ID serveru, což lze obejít úpravou konfiguračního souboru, a pro přísnější vynucení odkazuje na enterprise allowlist podle URL. Dokumentace Claude Code říká totéž o položkách serverName: nejsou bezpečnostní kontrolou, vynucovat je třeba přes URL nebo přesný příkaz. Příklad spravovaného nastavení pro tento nástroj:
{
"allowManagedMcpServersOnly": true,
"allowedMcpServers": [
{ "serverUrl": "https://api.githubcopilot.com/*" },
{ "serverUrl": "https://*.internal.example.com/*" },
{ "serverCommand": ["/usr/local/bin/company-mcp-server"] }
],
"deniedMcpServers": [
{ "serverUrl": "https://*.untrusted.example.com/*" }
]
}
Bez přepínače allowManagedMcpServersOnly se podle dokumentace allowlisty ze všech úrovní slučují a uživatel si seznam rozšíří sám. Obdobný detail hledejte u každého klienta, který ve firmě běží.
3. Review jako u závislostí – a průběžně
Zařazení serveru na allowlist má projít stejným procesem jako nová knihovna: kdo je autor, odkud se instaluje, jaká má oprávnění. Verzi připněte a balíčky stahujte přes interní zrcadlo, kde je lze skenovat. Případ postmark-mcp ukazuje, že škodlivý kód může přibýt až v pozdější verzi, takže kontrola musí běžet při každé aktualizaci. Postup je stejný jako u skenování závislostí.
Navíc sledujte změny v definicích nástrojů. Pillar Security doporučuje brát změnu popisu u již schváleného serveru jako bezpečnostní událost.
4. Tokeny s nejmenším oprávněním
- Žádné osobní tokeny s plným přístupem. Pro GitHub server jemně členěný token omezený na konkrétní repozitáře, pro databázi účet jen pro čtení.
- Oddělte kontexty. Agent, který čte nedůvěryhodný vstup (veřejná issue, příchozí e-maily), nemá mít ve stejné relaci přístup k citlivým datům a zároveň kanál ven.
- Tokeny nepatří do sdílených konfiguračních souborů. Kde to jde, použijte OAuth na uživatele nebo centrální autorizaci přes identity providera.
5. Izolace lokálních serverů
Lokální server běží standardně s právy uživatele, tedy s přístupem k ~/.ssh, ~/.aws i kubeconfigu. CSA doporučuje spouštět procesy MCP serverů v kontejnerech nebo sandboxu bez přístupu k přihlašovacím údajům hostitele; specifikace doporučuje totéž klientům. Omezte i odchozí síť – exfiltrace potřebuje cestu ven. Zásady jsou shodné s obecnou bezpečností kontejnerů.
6. Logování volání nástrojů
Bez záznamu, který agent zavolal jaký nástroj s jakými argumenty, nelze incident vyšetřit. Specifikace 2026-07-28 dokumentuje předávání trace kontextu OpenTelemetry a Claude Code umí při zapnutém exportu zaznamenávat názvy serverů a nástrojů. Logy patří do stejného systému jako ostatní bezpečnostní události, viz monitoring a logování.
Kdy je přísný režim zbytečný a kde naopak nestačí
Úplný zákaz MCP je legitimní volba pro prostředí s regulovanými daty, ale má cenu: lidé si najdou obchvat přes neřízené nástroje a přehled se zhorší. Schválený katalog s rychlým procesem přidání bývá udržitelnější než zákaz.
Malý tým s několika servery od velkých dodavatelů nepotřebuje vlastní registry ani gateway. Stačí vynucený allowlist podle URL, úzké tokeny a pravidlo pro review konfiguračních souborů. Centrální MCP gateway dává smysl až při desítkách serverů a více klientech; je to další komponenta, která drží tokeny a musí být sama zabezpečená.
Žádné z uvedených opatření neřeší prompt injection spolehlivě. Allowlist nepomůže, když schválený server vrátí data s vloženou instrukcí – přesně to byl případ GitHub MCP. Pro akce s nevratným dopadem (zápis do produkce, odeslání dat ven, mazání) proto ponechte lidské potvrzení a počítejte s tím, že agent může být zmanipulován.
Co udělat v pondělí
První týden
Klíčové poznatky
- MCP server je závislost, která mluví k modelu. Kromě kódu dodává text, který agent bere jako instrukce, a může ho kdykoli změnit.
- Incidenty jsou zdokumentované, ne hypotetické. Tool poisoning, únik přes GitHub MCP, CVE-2025-6514, postmark-mcp, problém STDIO konfigurací i Deadbugz mají veřejné primární zdroje.
- Specifikace 2026-07-28 zlepšila autorizaci, důvěryhodnost serveru a prompt injection ale neřeší a řešit nemůže.
- Allowlist podle názvu není kontrola. Výrobci to sami uvádějí v dokumentaci; vynucujte podle URL nebo přesného příkazu.
- Největší efekt mají úzké tokeny a oddělení kontextů. Omezují škodu i tehdy, když ostatní vrstvy selžou.
- Změna konfigurace MCP v repozitáři je změna spustitelného kódu a patří pod povinné review.
Zdroje
- Anthropic: Donating the Model Context Protocol and establishing the Agentic AI Foundation (prosinec 2025)
- Model Context Protocol Blog: The 2026-07-28 Specification (červenec 2026)
- Model Context Protocol: Key Changes (specifikace 2026-07-28) (červenec 2026)
- Model Context Protocol: Security Best Practices (červenec 2026)
- Model Context Protocol Blog: Enterprise-Managed Authorization (červen 2026)
- OWASP: MCP Top 10 (beta) (2025)
- Invariant Labs: MCP Security Notification – Tool Poisoning Attacks (duben 2025)
- Invariant Labs: GitHub MCP Exploited (květen 2025)
- JFrog: Critical RCE Vulnerability in mcp-remote (CVE-2025-6514) (červenec 2025)
- The Hacker News: First Malicious MCP Server Found Stealing Emails in Rogue Postmark-MCP Package (září 2025)
- OX Security: MCP Supply Chain Advisory (duben 2026)
- The Register: MCP „design flaw“ puts 200k servers at risk (duben 2026)
- Cloud Security Alliance: MCP Security Crisis – research note (květen 2026)
- Pillar Security: Deadbugz – currently active MCP supply chain campaign (srpen 2026)
- GitHub Docs: MCP allowlist enforcement (ověřeno říjen 2026)
- Claude Code Docs: Control MCP server access for your organization (ověřeno říjen 2026)