MCP SDK zraniteľnosť: sedem opráv z októbra 2026 a čo zmeniť v kóde vlastného MCP servera
Od 30. septembra do 15. októbra 2026 zverejnili správcovia oficiálneho MCP SDK pre TypeScript sedem bezpečnostných upozornení, päť z nich s vysokou závažnosťou, a pri štyroch samotná aktualizácia balíka nemusí stačiť. Ak firma prevádzkuje vlastný MCP server dostupný cez HTTP, cez ktorý AI asistent siaha na interné dáta, týka sa jej aj MCP SDK zraniteľnosť, pri ktorej server mohol doručiť odpoveď jedného klienta inému. Oprava vo verzii 2.3.0 balíka @modelcontextprotocol/server vyžaduje aj zmenu kódu. Lokálnych serverov cez stdio sa serverové chyby netýkajú.
Širší rámec toho, čo sa vo firme oplatí automatizovať, nájdete v našom sprievodcovi AI automatizáciou firemných procesov. Webhooky, prístupy a API kľúče v automatizačných tokoch rozoberá článok o bezpečnosti automatizácií. Tu riešime jednu konkrétnu knižnicu a to, čo s ňou urobiť ešte tento týždeň. Ak chcete MCP server alebo integráciu s AI nechať skontrolovať niekým, kto ich stavia, pozrite si našu službu automatizácie firemných procesov.
Koho sa MCP SDK zraniteľnosť týka a koho nie
Zasiahnutý je projekt, ktorý používa MCP SDK pre TypeScript a jeho server alebo klient komunikuje cez HTTP; servery spúšťané len lokálne cez stdio sa serverových chýb netýkajú.
MCP (Model Context Protocol) je protokol, cez ktorý sa AI aplikácia pripája k nástrojom a dátam. Server ponúka nástroje, napríklad vyhľadanie objednávky, a klient je aplikácia s AI modelom, ktorá ich volá. Špecifikácia MCP vo verzii 2026-07-28 pozná dva štandardné spôsoby prenosu. Pri stdio spúšťa server priamo klientska aplikácia ako podproces na tom istom počítači. Pri Streamable HTTP beží server ako samostatná služba s jednou adresou a každú správu prijíma ako HTTP požiadavku, takže sa k nemu môže pripojiť viac klientov.
Pre firmu z toho vyplývajú tri situácie:
- vlastný MCP server dostupný cez HTTP, napríklad nasadený na serveri alebo v cloude, aby k interným dátam mohlo pristupovať viac ľudí: týkajú sa ho chyby so zdieľanou inštanciou, overovaním tokenov a veľkosťou požiadaviek,
- vlastná aplikácia alebo skript, ktorý sa cez SDK pripája k MCP serverom cez HTTP a prihlasuje sa cez OAuth alebo API kľúč: týkajú sa ho dve chyby klienta, pri ktorých mohli prihlasovacie údaje odísť na cudziu adresu,
- server spúšťaný len lokálne cez stdio, napríklad z desktopovej AI aplikácie: serverové chyby sa ho netýkajú a aktualizáciu môžete spraviť pri bežnej údržbe.
Verziu zistíte v súbore package.json alebo príkazom npm ls v priečinku projektu. Vetva 1.x je jeden balík @modelcontextprotocol/sdk. Vetva 2.x je rozdelená na samostatné balíky @modelcontextprotocol/server, @modelcontextprotocol/client a adaptéry pre Express, Node a Hono. Keď vo výpise nenájdete žiadny balík @modelcontextprotocol, tieto upozornenia sa vášho projektu netýkajú. Keď ho nájdete, pokračujte tabuľkou nižšie.

MCP server, ktorý má svojho správcu
Ak neviete, na akej verzii váš MCP server beží a kto ho aktualizuje, pozrite si, ako integrácie s AI navrhujeme, staviame a odovzdávame zdokumentované.
Sedem upozornení MCP SDK v jednej tabuľke
Päť upozornení sa týka servera a dve klienta; všetky chyby vo vetve 1.x opravuje verzia 1.32.0 balíka @modelcontextprotocol/sdk.
Všetkých sedem upozornení je zverejnených v časti bezpečnostných upozornení repozitára MCP TypeScript SDK na GitHube. Každé obsahuje dotknuté verzie, opravené verzie a to, či treba okrem aktualizácie zmeniť aj kód.
| Čo sa mohlo stať | Strana | Závažnosť (CVSS) | Opravená verzia | Stačí aktualizácia? |
|---|---|---|---|---|
| Zdieľaná inštancia servera doručila odpoveď jedného klienta inému | server 2.x | vysoká, 7,7 | server 2.3.0 | nie, treba zmeniť kód |
| Server prijal token vydaný pre inú službu | server | stredná, 6,8 | sdk 1.32.0, server 2.3.0, express 2.0.2 | nie, treba zapnúť kontrolu audience |
| Jedna požiadavka v limite 4 MiB vyčerpala pamäť servera | server | vysoká, 7,5 | sdk 1.32.0, server 2.3.0 | nie, treba nastaviť limity |
| Chýbal limit veľkosti požiadavky a dĺžky dávky | server | vysoká, 7,5 | sdk 1.30.1, server a node 2.1.0, hono 2.0.1 | áno |
| Experimentálne úlohy neboli viazané na session, ktorá ich vytvorila | server 1.x | vysoká, 8,6 | sdk 1.32.0 | áno, prípadne odstrániť taskStore |
| OAuth klient poslal prihlasovacie údaje autorizačnému serveru, ktorý vybral MCP server | klient | vysoká, 7,5 | sdk 1.31.0, client 2.2.0 | nie vždy, záleží na nastavení a uložených tokenoch |
| Klient pri presmerovaní na inú doménu znova poslal hlavičky a telo požiadavky | klient | stredná, 6,5 | sdk 1.32.0, client 2.3.0 | áno, pri podozrení vymeniť kľúče |
K 22. októbru 2026 sú na npm najnovšie verzie 1.32.1 pre @modelcontextprotocol/sdk a 2.3.1 pre server aj client. Žiadne zo siedmich upozornení neuvádza, že by chybu niekto zneužil. Pri dvoch chybách s pamäťou servera však podľa upozornení útočník nepotrebuje prihlasovacie údaje, ak server neoveruje požiadavky skôr, než sa dostanú k SDK. Kým aktualizáciu odkladáte, server môže spadnúť po jedinej požiadavke od kohokoľvek, kto sa k jeho adrese dostane.
Kde aktualizácia nestačí: štyri zmeny v kóde
Pri zdieľanej inštancii servera, overovaní tokenov, limite vstupov a OAuth klientovi musí vývojár po aktualizácii upraviť aj kód alebo nastavenie.
Jeden server pre všetkých klientov
Upozornenie GHSA-jm63-cq47-j5jp opisuje kód, ktorý vytvorí transport alebo server raz pri štarte aplikácie a všetky HTTP požiadavky posiela cez neho. SDK priraďovalo správy k spojeniu len podľa JSON-RPC id. Klienti SDK číslujú požiadavky od nuly, takže sa tieto id pri bežnej prevádzke zhodujú a odpoveď s údajmi jedného používateľa mohla odísť inému. Presne tento vzor do vydania opravy ukazovali príklady v README adaptérov pre Hono, Express, Fastify a Node. Server, ktorý podľa nich napísal človek alebo AI nástroj, preto skontrolujte ako prvý.
Verzia 2.3.0 zdieľanie odmietne: druhé pripojenie skončí chybou ALREADY_CONNECTED a bezstavový transport odmietne druhú požiadavku. Takýto server po samotnej aktualizácii prestane odpovedať. Kód treba upraviť tak, aby vytváral nový server pre každú požiadavku, alebo jeden server a jeden transport pre každú session. Vetva 1.x má rovnaký typ chyby opravený od verzie 1.26.0 zo 4. februára 2026.

Token vydaný pre inú službu
Keď jeden autorizačný server vydáva tokeny pre viac služieb, MCP server s funkciou requireBearerAuth() alebo verifyBearerToken() prijal aj platný token určený inej službe. Časť špecifikácie o bezpečnostných postupoch v MCP pritom hovorí, že server nesmie prijať token, ktorý nebol vydaný preň. Opravené verzie pridávajú nastavenie expectedResource, ktoré je predvolene vypnuté. Treba ho zapnúť a zároveň vracať audience tokenu z verifyAccessToken(). Ak urobíte len prvú zmenu, server odmietne každú požiadavku s kódom 401. Na starších verziách problém uzavrie verifyAccessToken(), ktorý sám odmietne token, ak jeho aud váš server neobsahuje.
Limit na veľkosť vstupu
Jedna požiadavka v predvolenom limite 4 MiB mohla pri overovaní vstupu vyčerpať pamäť a proces skončil chybou JavaScript heap out of memory. Riziko je podľa upozornenia GHSA-46jr-4wx8-v453 najvyššie pri nástrojoch, ktorých vstup obsahuje pole alebo záznam. Nová voľba maxToolInputElements je predvolene vypnutá, preto ju nastavte tesne nad najväčší vstup, ktorý vaše nástroje potrebujú, a zároveň znížte maxRequestBodySize. Ak telo požiadavky spracúvate sami, napríklad cez express.json(), nastavte limit aj tam.
OAuth klient a staré uložené tokeny
Klient postavený na SDK mohol poslať refresh_token a client_secret autorizačnému serveru, ktorý si vybral MCP server. Oprava ukladá k prihlasovacím údajom aj issuer, tokeny uložené pred aktualizáciou ho však nemajú. Doplňte ho k nim, alebo ich zmažte, aby sa používatelia prihlásili znova. Hotovým poskytovateľom, napríklad ClientCredentialsProvider, treba odovzdať expectedIssuer. Ak sa klient mohol pripojiť k serveru, ktorému nedôverujete, upozornenie odporúča vymeniť client secret alebo podpisový kľúč a zrušiť vydané tokeny.
Pri overovaní tokenov a limite vstupov platí, že bez týchto zmien uvidíte v package.json opravenú verziu, ale server sa správa rovnako ako pred aktualizáciou.
Postup pre firmu: šesť krokov na tento týždeň
Zistite, kto server spravuje, overte verzie, aktualizujte na testovacej kópii, upravte kód, otestujte server s dvoma klientmi naraz a pri podozrení vymeňte kľúče.
- Spíšte všetky MCP servery a klientov vo firme a ku každému človeka, ktorý ho spravuje. Patria sem aj prototypy, ktoré niekto postavil s AI nástrojom a nechal bežať.
- V každom projekte spustite
npm lsa hľadajte balíky@modelcontextprotocol. Vo vetve 1.x je cieľ aspoň 1.32.0, vo vetve 2.x server a client aspoň 2.3.0 a adaptéry podľa tabuľky. - Aktualizujte najprv testovaciu kópiu, nie ostrý server. Server so zdieľanou inštanciou po aktualizácii prestane odpovedať, kým sa neupraví kód.
- Urobte zmeny z predchádzajúcej časti: server pre každú požiadavku alebo session, kontrolu audience, nastavenie
maxToolInputElementsamaxRequestBodySize,issuerpri OAuth. Ak kód používa experimentálnytaskStore, odstráňte ho, lebo špecifikácia 2026-07-28 ho nahradila novým rozšírením. - Otestujte server s dvoma klientmi súčasne a overte, že každý dostáva len svoje odpovede. Pošlite aj požiadavku väčšiu ako 4 MiB a overte, že ju server odmietne kódom 413 a nespadne.
- Ak sa klient mohol pripojiť k serveru mimo vašej kontroly alebo ho tam mohlo poslať presmerovanie, vymeňte API kľúče a client secret a zrušte vydané tokeny.

Podobnú situáciu sme opisovali pri zmene prístupov v Supabase Data API: aplikácia funguje, kým sa nezmení knižnica alebo služba pod ňou, a potom rozhoduje, či ju niekto vo firme vie upraviť. Server bez správcu ostane na starej verzii aj so všetkými chybami, ktoré sa ho týkajú.
MCP SDK zraniteľnosť v praxi: kto za server zodpovedá
Podľa nás je najväčším rizikom MCP server, ktorý vznikol ako rýchly pokus a nemá človeka, ktorý by ho aktualizoval.
Pri automatizáciách v menších slovenských firmách v praxi vidíme toky, ktoré vznikli ako pokus a ostali bežať. S MCP servermi hrozí to isté, len s väčším dosahom, lebo server sprístupňuje AI asistentovi objednávky, faktúry alebo údaje zákazníkov. Ak server pracuje s osobnými údajmi, odpoveď doručená nesprávnemu klientovi znamená, že sa tieto údaje dostali k inému používateľovi. Kontrolu, komu údaje patria, robí server. Ako s dodanými údajmi potom pracuje samotný model, vysvetľujeme v článku čo je LLM a čo AI naozaj nevie.
Pred stavbou vlastného servera si preto položte otázku, či ho naozaj potrebujete. Ak potrebujete len prepojiť dva bežné nástroje, môže stačiť automatizačná platforma, ktorú aktualizuje jej prevádzkovateľ. Porovnanie nájdete v článku o automatizáciách pre malé firmy cez n8n a Make.
Ako to riešime v Denve: integrácie napájame cez oficiálne rozhrania nástrojov a prístupy držíme na nevyhnutnom minime. Kritické kroky nastavíme tak, aby vás chyba upozornila hneď, a riešenie odovzdáme zdokumentované, aby ste mu rozumeli a neboli na nás naviazaní.
Kedy to zvládnete sami a kedy s nami
Zvládnete sami, ak:
- server spravuje vývojár, ktorý ho napísal a pozná jeho kód,
- používate len lokálne servery cez stdio v desktopovej AI aplikácii,
- aktualizácia prešla na testovacej kópii a server odpovedá dvom klientom naraz správne.
Oplatí sa prizvať nás, ak:
- server postavil AI nástroj alebo externý dodávateľ a nikto vo firme jeho kód nepozná,
- server pracuje s objednávkami, faktúrami alebo osobnými údajmi zákazníkov,
- klient sa prihlasuje cez OAuth a nie je jasné, ktoré tokeny a kľúče treba vymeniť.
Záver
Ak v projektoch nemáte žiadny balík @modelcontextprotocol, nemusíte robiť nič. Lokálny server cez stdio aktualizujte pri najbližšej údržbe. Ak cez HTTP beží MCP server, ktorý pracuje s firemnými alebo osobnými údajmi, aktualizácia a štyri zmeny v kóde patria do tohto týždňa, najprv na testovacej kópii a potom s testom dvoch klientov naraz. Server bez správcu nechajte niekoho prevziať, alebo ho vypnite, kým sa to nestane.
Neviete, či je váš MCP server v poriadku?
Napíšte nám, čo váš MCP server alebo integrácia s AI robí a kto ju postavil, a prejdeme s vami verzie, kód aj prístupy.
Časté otázky.
Týka sa zraniteľnosť MCP SDK aj lokálnych serverov cez stdio?
Serverových chýb nie. Upozornenia na zdieľanú inštanciu, vyčerpanie pamäte a chýbajúci limit požiadaviek výslovne uvádzajú, že servery len cez stdio zasiahnuté nie sú, a obe chyby klienta sa netýkajú klientov cez stdio. Aktualizáciu na opravenú verziu napriek tomu odporúčame pri najbližšej údržbe.
Na akú verziu MCP SDK treba aktualizovať?
Vo vetve 1.x aspoň na @modelcontextprotocol/sdk 1.32.0, vo vetve 2.x na server a client 2.3.0 alebo novšie. K 22. októbru 2026 sú na npm najnovšie verzie 1.32.1 a 2.3.1. Adaptéry express, node a hono majú vlastné opravené verzie 2.0.2, 2.1.0 a 2.0.1.
Zneužil niekto tieto chyby v praxi?
Upozornenia o zneužití nič neuvádzajú. Pri dvoch chybách s pamäťou servera však podľa nich útočník nepotrebuje prihlasovacie údaje, ak server neoveruje požiadavky skôr, než sa dostanú k SDK, preto aktualizáciu neodkladajte.
Prečo po aktualizácii MCP server prestal odpovedať?
Server pravdepodobne zdieľa jednu inštanciu servera alebo transportu medzi viacerými klientmi. Verzia 2.3.0 balíka @modelcontextprotocol/server to odmietne chybou ALREADY_CONNECTED, preto treba kód upraviť tak, aby vytváral server pre každú požiadavku alebo pre každú session.
Musím po týchto opravách vymeniť API kľúče?
Len ak sa klient mohol pripojiť k MCP serveru, ktorému nedôverujete, alebo ho presmerovanie mohlo poslať na cudziu adresu. Vtedy upozornenia odporúčajú vymeniť API kľúče, client secret alebo podpisový kľúč a zrušiť vydané tokeny.