MCPwn: Unauthenticated MCP takeover in Nginx UI
CVE-2026-33032 is a critical missing-authentication vulnerability in Nginx UI's Model Context Protocol (MCP) integration affecting versions 2.3.5 and earlier. The application exposes two MCP-related HTTP endpoints, /mcp and /mcp_message. The /mcp endpoint is protected by both IP allowlisting and authentication via AuthRequired() middleware, but /mcp_message only enforces IP allowlisting. Because the default IP whitelist is empty and treated as allow-all, remote attackers can reach /mcp_message without authentication. This design flaw allows unauthenticated invocation of MCP tools that perform privileged Nginx management operations, including restarting nginx, creating/modifying/deleting configuration files, and triggering automatic reloads. Public reporting also describes exploitation via establishing an MCP/SSE session and then sending tool invocations to /mcp_message using the returned session identifier.
Are you exposed to this one?
Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.
Impact, mitigation & remediation
What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.
Impact
What an attacker gets, and what they’ve been doing with it.
Mitigation
If you can’t patch tonight, do this now.
Remediation
Patch, then assume compromise.
Exploits
1 valid exploit after Mallory filtered fakes, detection scripts, and README-only repos (2 hidden).
This repository is a self-contained Docker lab and Python exploit demonstrating a chained zero-credential compromise of nginx-ui. The main exploit is exploit/exploit.py, which performs two stages: first, it abuses unauthenticated GET /api/backup to download an encrypted backup and recover the AES key/IV from the X-Backup-Security header, then decrypts nginx-ui.zip and parses app.ini to extract the [node] Secret. Second, it uses that secret to open an SSE session on /mcp, recover a sessionId, and then invoke privileged MCP tools through unauthenticated POST /mcp_message requests. The intended post-exploitation action is nginx takeover by overwriting default.conf so traffic is proxied to http://malicious_site:80, followed by reload_nginx to make the change live immediately. A reset path restores proxying to http://webapp:80. Repository structure supports the demo: docker-compose.yml launches a vulnerable uozi/nginx-ui:v2.3.1 instance on ports 8080 and 9000, a legitimate webapp container, and a malicious phishing container. nginx-ui/app.ini contains the lab configuration, including an empty Node.IPWhiteList and a node secret. nginx/conf.d/default.conf is the initial legitimate reverse-proxy config. webapp/index.html is the benign login page, while malicious/index.html is a phishing clone with a client-side credential capture panel exposed via ?debug=1 for demonstration. Overall, this is a real exploit repository rather than a detector: it automates credential-less secret extraction, privileged MCP access, configuration overwrite, and live nginx reload to redirect victim traffic.
Affected products & vendors
Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.
Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.
Recent activity
91 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.
An unauthenticated takeover vulnerability affecting Nginx UI MCP, referenced in a pull request/title context.
Referenced only as a related article about nginx-ui MCPwn; no substantive vulnerability details are provided in the content.
A critical vulnerability in nginx-ui that can allow attackers to take full control of Nginx servers, reportedly via abuse of the /mcp and /mcp_message endpoints and session handling in the SSE-based management workflow.
A critical vulnerability affecting Nginx UI version v2.3.5 and prior that has reportedly been exploited in the wild.
The version that knows your environment.
Query your assets running an affected version, and investigate the blast radius.
Every observed campaign linking this CVE to a named adversary.
Malware families riding this exploit, with evidence and IOCs.
YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.
Cross-references every affected SKU, including bundled OEM variants.
Community discussion across Reddit, Mastodon, and other social sources.