Přeskočit na obsah
Bezpečnost 3 min čtení

U MCP serveru Dynatrace vyšly čtyři záznamy. Dva jsou o ochranách, které nic nevynutí

Balíček @dynatrace-oss/dynatrace-mcp-server dostal mezi 29. a 31. červencem čtyři bezpečnostní záznamy. Nejvyšší číslo má režim HTTP, který se nikoho neptá na heslo. Dva další míří na anotaci u nástroje a na schvalovací bránu – a ani jedno z toho protokol nevynucuje.

Firma Dynatrace vyvíjí server pro protokol MCP, kterým se agentní nástroje dostanou k datům z její pozorovací platformy – k logům, incidentům, nálezům ze skenu zranitelností. Je pod licencí MIT a z npm si ho v červenci stáhli 75 470krát. Mezi 29. a 31. červencem k němu vyšly čtyři bezpečnostní záznamy naráz.

Kompaktní kazeta s vylomeným jazýčkem proti přepisu
Kazeta s vylomeným jazýčkem proti přepisu. Taková pojistka je v hmotě; anotace u nástroje MCP je jen údaj, který server o sobě uvede. Foto: Mikus, Wikimedia Commons (CC BY-SA 4.0)

Za všemi čtyřmi je v poděkování účet yotampe-pluto, u toho nejzávažnějšího vedle něj ještě dva další. Opravy přitom vyšly o týdny dřív, než se popisy objevily: verze 1.8.7 8. června, 2.0.0 16. června a 2.1.1 14. července – tedy 51, 45 a 17 dní před zveřejněním. Popsat nález až po opravě je běžný postup; totéž se stalo u pěti záznamů u knihovny Ruby pro MCP.

Co anotace u nástroje znamená

Server v MCP nabízí klientovi seznam nástrojů a u každého smí připojit anotace – několik nepovinných příznaků, které o nástroji něco tvrdí. Nejznámější je readOnlyHint. Podle schématu protokolu znamená „nástroj nemění své prostředí“ (přeloženo).

Táž pasáž schématu ale hned dodává, že všechny vlastnosti anotací jsou jen nápovědy a že u nich není zaručeno, že chování nástroje popisují věrně. Popis nástrojů ve specifikaci to říká ještě tvrději: klient musí anotace považovat za nedůvěryhodné, pokud nepřicházejí z důvěryhodného serveru. Anotace tedy nic nevynutí. Je to údaj, který server sám o sobě uvede.

Injekce, která obejde popis nástroje

Záznam GHSA-pqh8-p93p-2rx7 (CVSS 4,3) popisuje vkládání dotazovacího jazyka DQL do parametrů, které jsou v popisu nástroje označené jako identifikátory nebo časové rozpětí. Volající se z řetězce dostane ven, přilepí vlastní části dotazu a zbytek toho původního odřízne poznámkou.

Zajímavý na tom není přístup k datům – ten operátorův token stejně dovoluje, protože server nabízí i nástroj na libovolný dotaz. Zajímavé je, co se obejde. Popis nálezu jmenuje výslovně tři věci: omezení na vybraná pole, stropy na počet vypsaných položek, časové okno – a k tomu právě anotaci readOnlyHint: true, kterou podle téhož textu klienti MCP mohou brát jako pokyn ke schválení bez dotazu uživateli. Nástroj tedy o sobě tvrdí, že jen čte, a klient mu na to slovo dá.

Pět nástrojů se ptalo, šestý ne

Druhá vrstva ochrany je schvalovací brána: server si sám vyžádá souhlas obsluhy, než něco zapíše. V tomto serveru to obstarává funkce requestHumanApproval(). Záznam GHSA-pc2w-4mq8-32qw (CVSS 3,7) uvádí, že ze šesti zapisujících nástrojů ji volalo pět. Šestý, zakládající poznámkový sešit v platformě, ne – přibyl v jiném vydání než ostatní a při doplňování bran se na něj zapomnělo.

Ani tahle brána není součást protokolu. Je to řádek v kódu serveru, který tam někdo musí napsat. Když chybí, klient se nemá o co opřít: z venku vypadá takový nástroj stejně jako ty ostatní. Opraveno je to od verze 1.8.7.

Nejvyšší číslo dostal režim HTTP

Nejzávažnější nález GHSA-p7w7-4929-vpj5 (CVSS 7,5) s anotacemi nesouvisí. Server se dá spustit přepínačem --http a v tomto režimu podle popisu neověřoval nic – ani token, ani relaci, ani hlavičky HostOrigin. Kdo se na něj dosáhl po síti, mohl volat nástroje pod přihlašovacími údaji provozovatele. Čtvrtý záznam GHSA-xrmj-5g4g-8987 (CVSS 4,2) popisuje vložení výrazu Jinja2 do definice pracovního postupu, který pak v platformě zůstane i po skončení sezení. Obojí je opravené od verze 2.0.0, poslední vydání je 2.1.2 z 20. července.

Co z toho plyne pro cizí servery

Popisy nálezů jsou u tohohle projektu nezvykle podrobné: jmenují soubor, čísla řádků i úryvek kódu, a u každého je odkaz na návrh změny, kterým se to spravilo. Kdo si chce ověřit, jak nález vznikl, má to celé před sebou.

Podstatné je, že dva ze čtyř nálezů nejsou o chybě v jednom balíčku, ale o tom, jak protokol funguje. Anotace i schvalovací brána jsou obojí věcí serveru. Když klient podle nich rozhoduje, jestli se má zeptat obsluhy, přenáší to rozhodnutí na protistranu – a specifikace ho na to sama upozorňuje. Náš názor: u serveru, který si člověk spouští sám a dá mu vlastní přístupové údaje, to velký problém není. Horší je to u serverů provozovaných někým jiným, kterých v ekosystému MCP přibývá.

Diskuse

Zatím tu nikdo nediskutuje. Můžete být první.

Napsat příspěvek

Diskutovat můžete i bez účtu. S registrací se ale příspěvek zveřejní hned a nemusíte pokaždé vyplňovat jméno. Účet už máte? Přihlaste se.

Nezveřejňujeme ho, slouží jen redakci.

Podporuje zápis Texy: **tučně**, *kurzíva*, odrážky, odkazy.

Dál k tématu

  1. Bezpečnost

    V AgentCore CLI šlo podstrčit kód do generovaného agenta. Oprava ho neodstraní

    Nástroj @aws/agentcore, kterým se v Amazon Bedrock AgentCore zakládají a nasazují agenti, vypisoval popis spolupracujícího agenta do trojitě uvozeného řetězce v…

  2. Bezpečnost

    Ruby SDK protokolu MCP dostalo pět CVE. Opravy vyšly o tři týdny dřív než hlášení

    Databáze bezpečnostních hlášení GitHubu přidala 30. července 2026 k oficiální rubyové knihovně protokolu MCP pět záznamů najednou, dva s vysokou závažností. Všechny…

  3. Bezpečnost

    Langflow je v katalogu CISA popáté, federální úřady dostaly tři dny

    CISA zařadila 21. července do katalogu zneužívaných zranitelností chybu CVE-2026-0770 v Langflow, nástroji na skládání agentů nad jazykovými modely. Dovoluje spustit kód…

  4. Bezpečnost

    Claude při testech napadl tři skutečné organizace a vydal škodlivý balíček na PyPI

    Anthropic prošel zpětně 141 006 testovacích běhů a našel šest, ve kterých se model dostal z uzavřeného prostředí na internet a napadl provozní systémy tří organizací.…