Servery MCP rodiny faf mají opravu, tři jejich kopie na npm ji nemají
Databáze GitHubu vydala 19. srpna 2026 tři bezpečnostní hlášení k balíčkům faf-mcp, claude-faf-mcp a grok-faf-mcp: jejich nástroje si nechaly podstrčit cestu k libovolnému souboru na disku. Opravné verze vyšly už 11. června a všechny tři balíčky je dnes na npm mají. Pod jinými účty tam ale leží tři starší kopie téhož kódu, které opravu nenesou a které žádné hlášení nejmenuje.

Databáze bezpečnostních hlášení GitHubu přidala 19. srpna 2026 během čtyřiadvaceti vteřin tři záznamy. Týkají se balíčků faf-mcp, claude-faf-mcp a grok-faf-mcp, tedy tří serverů protokolu MCP, které agentovi podávají kontext projektu ze souboru .faf. Text hlášení je až na jména nástrojů a čísla verzí týž. Není to náhoda: všechny tři balíčky vydává na npm tentýž účet a všechny tři odkazují na repozitáře jednoho vlastníka.
Cesta ze zadání šla rovnou na disk
Nástroje serveru přijímají od volajícího argument path. Server v něm rozbalil vlnovku na domovský adresář, poskládal absolutní cestu a s ní sáhl na soubor. Chybělo přitom ověření, že výsledek leží uvnitř projektu, ke kterému se server hlásí – takže absolutní cesta i skok o adresář výš prošly a jedinou zbývající mezí byla práva procesu v operačním systému.
Popis jmenuje, co se tou cestou dá přečíst: soukromý klíč SSH, přihlašovací údaje ke cloudu, soubor .env s tajemstvími projektu. Shrnutí u faf-mcp a claude-faf-mcp mluví o čtení i zápisu, u grok-faf-mcp jen o čtení – ačkoli i jeho vlastní text o kus dál uvádí, že nástroj faf_write uměl zapsat mimo projekt. Závažnost je u všech tří vedená jako vysoká se známkou CVSS 7,5 a číslo CVE k ní přidělené není.
Podle hlášení běží server přes standardní vstup a výstup, ne jako služba na síti, takže ho zvenčí nikdo neosloví. Volání nástroje vydá agent – a ten se k němu dá přimět textem, který zpracovává. Že agentovi stačí podstrčit obsah, který si přečte jako pokyn, ukázalo měření na Claude Code a Codexu. Tady je odměnou domovský adresář uživatele.
Opravu pozná i ten, kdo nečte kód
Záplata přidala do balíčku jeden nový soubor, dist/src/utils/safe-path.js. Je vidět v seznamu souborů, takže se dá najít bez čtení kódu – stačí balíček z registru npm rozbalit. Ve verzích faf-mcp 2.1.2, claude-faf-mcp 5.7.1 a grok-faf-mcp 1.5.2 chybí, v následujících 2.1.3, 5.7.2 a 1.5.3 je. Ověřeno vlastním stažením všech šesti balíčků z registru npm 20. srpna 2026.
Všechny tři opravné verze vyšly 11. června 2026 mezi 14:46 a 14:51 UTC. Hlášení k nim přišla o devětašedesát dní později. Podobné pořadí měly opravy pěti chyb v knihovně Ruby pro MCP, tam byl ale odstup tři týdny.
Chybu podle poděkování v hlášení nahlásil Zhihao Zhang z Worcester Polytechnic Institute, a to u grok-faf-mcp; ostatní dva balíčky si správci prošli sami. Kdo některý z té trojice instaluje dnes, dostane opravený kód: na npm je faf-mcp 2.3.1, claude-faf-mcp 5.22.1 a grok-faf-mcp 1.9.1. Od 20. července do 19. srpna si je někdo stáhl 972krát, 2 580krát a 1 060krát.
Týž kód leží na npm ještě pod pěti jmény
Balíček z npm může znovu vydat kdokoli, kdo si ho stáhne a pošle nahoru pod svým účtem. U serverů faf to udělaly tři cizí účty a přibylo tím pět dalších záznamů. Údaj o repozitáři v jejich metadatech míří na tytéž adresy na GitHubu a licence je stejná, MIT.
| @mseep/claude-faf-mcp 5.12.0 | 22. 6. 2026 | opravu má |
| @mseep/grok-faf-mcp 1.9.1 | 13. 8. 2026 | opravu má |
| @iflow-mcp/wolfejam-claude-faf-mcp 4.5.0 | 3. 3. 2026 | opravu nemá |
| @iflow-mcp/wolfe-jam-grok-faf-mcp 1.0.4 | 26. 2. 2026 | opravu nemá |
| @fastmcp-me/claude-faf-mcp 2.7.3 | 4. 11. 2025 | opravu nemá |
Dvě kopie od účtu mseep vznikly po červnu a soubor safe-path.js v sobě mají. Zbylé tři jsou starší a nemají ho; jejich vydavatelé je od nahrání neaktualizovali, takže v nich zůstal kód z doby před opravou. Provoz mají malý – za totéž období 28, 27 a 28 stažení, dohromady tedy třiaosmdesát.
Žádné ze tří hlášení je nejmenuje a jmenovat je ani nemůže. Záznam se vede k balíčku a k rozsahu jeho verzí, takže kopii vydanou pod jiným jménem nemá s čím spárovat – a npm audit, který se řídí jménem a verzí, ji nechá být. Svoje mezery ostatně databáze GitHubu nezastírá: u brány ContextForge vedla jen jedno ze čtyř hlášení, která projekt vydal.
Servery MCP se instalují podle návodů, přehledů a katalogů a jméno balíčku bývá v každém z nich jiné. Než se člověk spolehne na to, že je nástroj v pořádku, protože o něm žádné hlášení nekoluje, vyplatí se otevřít vlastní konfiguraci a podívat se, jaké jméno v ní stojí.