CVE-2026-120338
CriticalCVSS 10.0Exploitation Probability (EPSS)
Elevated risk56th percentile - higher than 56% of all known CVEs
Summary
The Generative UI sandbox in prefab-ui runs caller-supplied Python inside Pyodide (WebAssembly) in a Deno subprocess, but from 0.14.0 through 0.20.2 Deno starts with unrestricted --allow-read, --allow-write, and --allow-net, and the Deno API remains on the JavaScript global object. This lets Python call Deno.readTextFileSync and Deno.writeTextFileSync, enabling file read/write as the server OS user and persistent code execution via a .pth file in site-packages.
Risk Assessment
A client able to supply code to the generate_prefab_ui tool (e.g., via FastMCP without authentication) can read and write files on the server and persist code execution. This leads to full compromise of the application server.
Recommendation
Update prefab-ui to 0.21.0 (commit 030f074, PR 538), which revokes Deno permissions before accepting code and restricts network access. Until then, do not expose the generate_prefab_ui tool to untrusted clients.
Related vulnerabilities
- CVE-2026-86596Critical
The s2Member plugin for WordPress in versions up to and including 260927 is vulnerable to Remote Code Execution via the 'item_name' parameter. Insufficient sanitization in strip_php_tags_deep() only strips literal '<?' sequences, and a post-interpolation placeholder cleanup reassembles a valid '<?php' opener after the attacker-controlled value has already been embedded in the email template.
- CVE-2026-97718Critical
CVE-2026-97718 is a cross-site request forgery vulnerability in version 14.60 of the Secure Access server. Because of a bypassed security control, an attacker can cause an admin to create an account under their control.
- CVE-2026-116769Critical
CVE-2026-116769 is an authentication bypass vulnerability in Secure Access servers starting with version 13.0 and prior to 14.61. Attackers can modify security settings of a client via the server.
- CVE-2026-102435Critical
The Ultra Addons for Contact Form 7 plugin for WordPress is vulnerable to arbitrary file deletion due to insufficient file path validation in the _getObjAttr function in all versions up to, and including, 3.5.54. This makes it possible for unauthenticated attackers to delete arbitrary files on the server, which can easily lead to remote code execution when the right file is deleted (such as wp-config.php). This requires the PDF Generator add-on to be active and a Contact Form 7 form to be configured for PDF generation.
- CVE-2026-105606Critical
The Joomla Custom Tables extension before 3.7.8 allows an unauthenticated attacker to upload a polyglot file with an attacker-controlled extension to the web-accessible tmp directory. The stored path is disclosed in the response, and the file is served as static content by default.
- CVE-2026-105604Critical
The Joomla DJ-Classifieds extension before 3.11.3 is vulnerable to an unauthenticated SQL injection in the frontend search.
- CVE-2026-105603Critical
The Joomla DJ-Classifieds extension before 3.11.3 is vulnerable to an unprivileged file upload, leading to full remote code execution (RCE).
- CVE-2026-88811Critical
Missing filtering in the SUSE Rancher Manager meta proxy could cause passed-in Rancher credentials to be leaked to cloud providers. This affects SUSE Rancher 2.15.0 up to 2.15.3, 2.14.0 up to 2.14.7, and 2.13.0 up to 2.13.11.
- CVE-2026-105769Critical
kaniko before 1.25.20 can send a Microsoft Entra ID (Azure AD) access token for Azure Resource Manager to an attacker-controlled registry host. This is due to an unanchored regular expression in the ACR credential helper that accepts hostnames containing .azurecr.io, .azurecr.cn, .azurecr.de, or .azurecr.us.
- CVE-2026-94290Critical
The SUSE Rancher Fleet controller did not sufficiently restrict which kubeconfig secrets a Fleet Cluster object was allowed to reference. As a result, an ordinary user could define a cluster in a namespace they control and associate it with administrative credentials for the management cluster, causing the controller to manage the management cluster on that user's behalf with elevated privileges. This affects Fleet 0.16.0–0.16.3, 0.15.0–0.15.8, 0.14.0–0.14.12, 0.13.0–0.13.17 and possibly older versions.
Original NVD description (English source)
Prefab UI's Generative UI sandbox runs caller-supplied Python inside Pyodide, Python compiled to WebAssembly, in a Deno subprocess. The feature is documented as isolation for untrusted code, including LLM-written UI. From prefab-ui 0.14.0 through 0.20.2 the launcher starts Deno with unrestricted --allow-read, --allow-write, and --allow-net, and the runner leaves the Deno API on the JavaScript global object. Pyodide's js module proxies that global, so the Python can call Deno.readTextFileSync and Deno.writeTextFileSync. A caller who can supply the code can read and write files as the server OS user, and can persist code execution by writing a .pth file into the server virtualenv's site-packages. The usual remote path is FastMCP's GenerativeUI provider, which registers the MCP tool generate_prefab_ui and forwards that tool's code argument into this sandbox. On a FastMCP server with no authentication configured, any client who can reach the server can call the tool. With authentication, any client allowed to call tools can. Generative UI is opt-in, and the host must have Deno installed. Confirmed on prefab-ui 0.20.2. Fixed in 0.21.0: after the runtime and Prefab sources load, the runner revokes Deno read, write, and network permission before it accepts code, the process is started with --no-prompt so a permission request cannot grant them again, and bootstrap network access is limited to cdn.jsdelivr.net. The fix is commit 030f074 (pull request 538).
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

