{"id":"CVE-2026-84360","aliases":["GHSA-vc32-4gwf-77xp","GO-2026-6799"],"url":"https://o3.security/vulnerability/CVE-2026-84360","summary":"Nginx UI: OTP secure-session step-up can be bypassed via MCP configuration tools","details":"### Summary\nAn OTP-enabled authenticated user who cannot use the HTTP configuration mutation endpoints without a valid secure session can still mutate Nginx configuration through `/mcp` and `/mcp_message` using only ordinary authentication.\n\n### Details\nThe HTTP configuration mutation surface is explicitly grouped behind `middleware.RequireSecureSession()`. By contrast, the MCP endpoints are exposed with only `middleware.AuthRequired()`. The MCP server exposes configuration mutation tools including `nginx_config_add` and `nginx_config_modify`, so OTP-enabled users gain an alternate path around the intended step-up requirement.\n\nRelevant code paths:\n- [api/config/router.go](/home/kali/Desktop/bounty/nginx-ui/api/config/router.go:14)\n- [internal/middleware/secure_session.go](/home/kali/Desktop/bounty/nginx-ui/internal/middleware/secure_session.go:52)\n- [mcp/router.go](/home/kali/Desktop/bounty/nginx-ui/mcp/router.go:9)\n- [mcp/config/config_add.go](/home/kali/Desktop/bounty/nginx-ui/mcp/config/config_add.go:34)\n- [mcp/config/config_modify.go](/home/kali/Desktop/bounty/nginx-ui/mcp/config/config_modify.go:55)\n\nThis is a security-control bypass rather than a missing feature. The product already established that OTP-enabled users should complete a secure session before high-impact configuration mutations are accepted on the HTTP path.\n\n### PoC\nI verified this locally in an isolated environment with a temporary end-to-end harness that exercised the real `/mcp` and `/mcp_message` routes.\n\nWhat the executed test did:\n1. Created a temporary config directory and configured Nginx control commands to harmless local values (`true`) to avoid touching the host.\n2. Created a real OTP-enabled user in a temporary SQLite database.\n3. Generated a real JWT for that OTP-enabled user.\n4. Started a local test server exposing the real `/mcp` and `/mcp_message` routes.\n5. Opened an authenticated SSE connection to `/mcp` with the JWT and no `X-Secure-Session-ID`.\n6. Initialized the MCP session over `/mcp_message`.\n7. Called the real `nginx_config_add` tool over `/mcp_message`.\n8. Verified that the tool succeeded and created `mcp-bypass.conf` in the managed config directory without any secure-session step-up.\n\nObserved result from the actual local verification:\n- The MCP session initialized successfully without any `X-Secure-Session-ID`.\n- The config file was written through the MCP tool path using only JWT authentication.\n\n### Impact\nOTP-enabled accounts lose the intended step-up protection for high-impact Nginx configuration changes when MCP is enabled. A user who should be blocked until re-authenticating can still create or modify configuration files and trigger reload behavior through MCP.","published":"2026-10-12T21:08:04.687Z","modified":"2026-10-21T03:00:29.147348038Z","cvss":{"score":8.1,"severity":"HIGH","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H"},"epss":null,"cisaKev":null,"exploitsKnown":null,"affectedPackages":[{"ecosystem":"Go","name":"github.com/0xJacky/Nginx-UI","fixedVersion":"1.9.10-0.20260703131214-23d1934099b0"}],"fix":{"url":"https://github.com/0xJacky/nginx-ui/commit/23d1934099b05b2a01589b48129dc3d3159d91c2","label":"0xJacky/nginx-ui@23d1934"},"references":[{"type":"WEB","url":"https://github.com/0xJacky/nginx-ui/releases/tag/v2.4.1"},{"type":"ADVISORY","url":"https://github.com/0xJacky/nginx-ui/security/advisories/GHSA-vc32-4gwf-77xp"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/84xxx/CVE-2026-84360.json"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-84360"},{"type":"FIX","url":"https://github.com/0xJacky/nginx-ui/commit/23d1934099b05b2a01589b48129dc3d3159d91c2"},{"type":"PACKAGE","url":"https://github.com/0xJacky/nginx-ui"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-10-21T03:00:29.147348038Z"}}