Kritiek lek in Prefab UI zet MCP-servers wagenwijd open
Een Python-bibliotheek die door AI geschreven interfacecode veilig zou moeten afschermen, liet die code juist vrij spel op de server. JFrog Security Research publiceerde op 1 november een advies over CVE-2026-120338 in Prefab UI, met de maximale CVSS-score van 10. Wie de Generative UI-functie via FastMCP aanbiedt, moet direct updaten naar versie 0.21.0.
Wat er misgaat in de sandbox
Prefab UI (het pakket prefab-ui, ondergebracht bij de GitHub-organisatie van PrefectHQ) heeft een functie waarmee een taalmodel zelf UI-code schrijft. Die Python-code draait in Pyodide, Python gecompileerd naar WebAssembly, binnen een apart Deno-proces. De documentatie presenteert dat als isolatie voor onvertrouwde code, “including UI written by a model”, schrijft JFrog.
Die afscherming bleek lek. JFrog-onderzoeker Yuval Moravchick ontdekte dat Deno werd gestart met volledige lees-, schrijf- en netwerkrechten. De Deno-API bleef bovendien beschikbaar op het globale JavaScript-object, en via de js-module van Pyodide kon de Python-code daar gewoon bij. Het gevolg: code in de “sandbox” kon bestanden op de server lezen en schrijven met de rechten van de serveraccount.

Waarom MCP-servers het grootste risico lopen
De ernst zit in de koppeling met FastMCP. De GenerativeUI-provider daarvan registreert een MCP-tool, generate_prefab_ui, die het code-argument zonder extra controle doorzet naar de sandbox. Op een MCP-server zonder authenticatie kan iedere client die de server bereikt dus eigen code insturen. Dat levert de score van 10 op. Met authenticatie volstaat een account dat tools mag aanroepen; JFrog komt dan uit op 9,9.
In versie 0.20.2 gebruikte JFrog de schrijfrechten om een .pth-bestand in de map site-packages van de virtuele omgeving te zetten. Het volgende Python-proces in die omgeving voerde de geplante code vervolgens automatisch uit. Een aanvaller houdt zo een voet tussen de deur, ook na een herstart.
Er zijn wel drempels. Generative UI staat standaard uit en Deno moet op de host geïnstalleerd zijn. Kwetsbaar zijn de versies 0.14.0 tot en met 0.20.2. Volgens OffSeq Threat Radar is misbruik in het wild nog niet bekend.
De oplossing in versie 0.21.0
De fix verscheen al op 26 oktober, enkele dagen voor de publicatie. Versie 0.21.0 trekt de lees-, schrijf- en netwerkrechten van Deno in zodra de runtime is geladen en voordat er gegenereerde code binnenkomt. Deno start daarnaast met --no-prompt, zodat de rechten later niet terug te vragen zijn. Netwerkverkeer tijdens het opstarten is beperkt tot cdn.jsdelivr.net. The Hacker Wire raadt beheerders die nog niet kunnen updaten aan om Generative UI uit te zetten, FastMCP-servers af te schermen van het open internet en site-packages te bewaken op nieuwe .pth-bestanden.
Wat betekent dit
Het patroon is bekend. Eerder vond Cyera een vergelijkbare Pyodide-uitbraak in n8n (CVE-2025-68668, score 9,9). Pyodide zelf is in beide gevallen niet het probleem. Het gaat mis bij de brug naar de omgeving eromheen. Voor wie AI-agents code laat schrijven en uitvoeren is de les dat het woord sandbox weinig zegt zolang niemand de rechten van het proces controleert.
Dat sluit aan bij eerdere incidenten rond agents en ontwikkeltools, zoals de besmette Claude Code-extensie met een SSH-achterdeur en de manier waarop prompt injection de Auto Mode van Claude Code omzeilde. Ook de hack bij Chainalysis met AI-agents laat zien hoe snel aanvallers zulke gaten benutten. Bedrijven die agents op productieservers zetten, doen er goed aan om ze net als medewerkers een eigen identiteit en beperkte rechten te geven.
