{"id":"CVE-2026-84318","kind":"vulnerability","aliases":["CVE-2026-84318","GHSA-9jww-cxg5-rj9m","GO-2026-6781"],"related":[],"title":"Nginx UI: MCP `nginx_config_add` Bypasses Directive Validation — Authenticated RCE in github.com/0xJacky/Nginx-UI","description":"Nginx UI is a web user interface for the Nginx web server. From 2.0.0-rc.6 until 2.4.1, the MCP tool nginx_config_add writes nginx configuration files to disk and triggers an nginx reload without calling config.ValidateConfigFile. The identical flow in the REST API (POST /api/configs) does call that function and correctly rejects dangerous directives. An authenticated attacker can exploit this gap to write config files containing any blocked directive (perl, js_import, load_module, user root, etc.), bypassing nginx-ui's entire security layer. On a server with the nginx Perl, njs, or Lua module loaded, this is post-authentication Remote Code Execution. This issue is fixed in version 2.4.1.","summary":"The MCP tool nginx_config_add in Nginx UI writes nginx config files and reloads nginx without running the directive validation that the REST API applies. An authenticated attacker can write blocked directives such as perl, js_import, load_module, or user root, which leads to code execution on servers that load the nginx Perl, njs, or Lua module.","severity":"high","cvss":8.8,"epss":0.00617,"exploited":false,"exploited_at":null,"products":[{"name":"github.com/0xJacky/Nginx-UI","fixed":["1.9.10-0.20260703131214-23d1934099b0"],"affected":">= 1.9.10-0.20250506154222-1330888280a2, < 1.9.10-0.20260703131214-23d1934099b0","ecosystem":"go"}],"ecosystems":["go"],"tags":["ai-tooling","go","mcp","nginx","nginx-ui","self-hosted"],"not_affected_if":["version-outside-range"],"how_to_check":"Check the nginx-ui version: versions from 2.0.0-rc.6 up to but not including 2.4.1 are affected. For Go module users, the affected range is before 1.9.10-0.20260703131214-23d1934099b0.","fix":"Upgrade Nginx UI to 2.4.1 or later (Go module 1.9.10-0.20260703131214-23d1934099b0 or later). Rotate credentials for any nginx-ui account that may have been exposed.","status":"open","published_at":"2026-10-12T21:17:22+00:00","first_seen_at":"2026-10-23T19:13:08+00:00","triaged_at":"2026-10-23T20:56:52+00:00","updated_at":"2026-10-23T20:56:52+00:00","category":"ai-tooling","confidence":0.8,"triage":{"at":"2026-10-23T20:56:52Z","model":"claude-haiku-5-5","output":{"fix":"Upgrade Nginx UI to 2.4.1 or later (Go module 1.9.10-0.20260703131214-23d1934099b0 or later). Rotate credentials for any nginx-ui account that may have been exposed.","reach":"internet","impact":"high","summary":"The MCP tool nginx_config_add in Nginx UI writes nginx config files and reloads nginx without running the directive validation that the REST API applies. An authenticated attacker can write blocked directives such as perl, js_import, load_module, or user root, which leads to code execution on servers that load the nginx Perl, njs, or Lua module.","category":"ai-tooling","who_cares":["nginx-ui","mcp","go","nginx","self-hosted"],"confidence":0.8,"needs_auth":"yes","worst_case":"Attacker runs code on the server via injected nginx modules directives.","analyst_note":"","how_to_check":"Check the nginx-ui version: versions from 2.0.0-rc.6 up to but not including 2.4.1 are affected. For Go module users, the affected range is before 1.9.10-0.20260703131214-23d1934099b0.","needs_analyst":false,"not_affected_if":["version-outside-range"],"user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000901,"input_tokens":3175,"output_tokens":1166,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2026':17A,25A,28A '-6781':26A '-84318':18A,29A '/0xjacky/nginx-ui':15A,32A '/api/configs':149C '2.0.0':117C '2.4.1':120C,216C '9jww':21A 'add':6A,50B,126C 'ai':34B 'ai-tool':33B 'api':69B,147C 'appli':70B 'attack':73B,161C 'authent':10A,72B,160C,206C 'block':76B,172C 'bypass':7A,182C 'call':139C,151C 'code':91B,208C 'config':5A,49B,56B,125C,168C 'config.validateconfigfile':140C 'configur':129C 'contain':170C 'correct':155C 'cve':16A,27A 'cxg5':22A 'danger':157C 'direct':8A,64B,77B,158C,173C 'disk':132C 'entir':187C 'etc':181C 'execut':92B,209C 'exploit':163C 'file':57B,130C,169C 'fix':213C 'flow':143C 'function':153C 'gap':165C 'ghsa':20A 'ghsa-9jww-cxg5-rj9m':19A 'github.com':14A,31A 'github.com/0xjacky/nginx-ui':13A,30A 'go':24A,36B 'host':44B 'ident':142C 'import':82B,176C 'interfac':110C 'issu':211C 'js':81B,175C 'layer':189C 'lead':89B 'load':83B,96B,177C,201C 'lua':102B,199C 'mcp':3A,37B,46B,122C 'modul':84B,103B,178C,200C 'nginx':1A,4A,38B,40B,48B,52B,55B,60B,98B,104C,113C,124C,128C,136C,184C,195C 'nginx-ui':39B,183C 'njs':100B,197C 'perl':80B,99B,174C,196C 'post':148C,205C 'post-authent':204C 'rc.6':118C 'rce':11A 'reject':156C 'reload':59B,137C 'remot':207C 'rest':68B,146C 'rj9m':23A 'root':87B,180C 'run':62B 'secur':188C 'self':43B 'self-host':42B 'server':94B,115C,192C 'tool':35B,47B,123C 'trigger':134C 'ui':2A,41B,53B,105C,185C 'user':86B,109C,179C 'valid':9A,65B 'version':215C 'web':108C,114C 'without':61B,138C 'write':54B,75B,127C,167C","nicknames":[],"mitigations":[],"who_affected":null,"tier":null,"verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-12T21:17:22+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"govuln","external_id":"GO-2026-6781","url":"https://pkg.go.dev/vuln/GO-2026-6781","severity":null,"published_at":"2026-10-19T21:08:35+00:00","modified_at":"2026-10-19T21:08:35+00:00","first_seen_at":"2026-10-23T19:13:08+00:00","fetched_at":"2026-10-23T19:13:08+00:00","note":null},{"source":"epss","external_id":"CVE-2026-84318","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-84318","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-23T19:13:43+00:00","fetched_at":"2026-10-23T19:13:43+00:00","note":null},{"source":"nvd","external_id":"CVE-2026-84318","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-84318","severity":null,"published_at":"2026-10-12T21:17:22+00:00","modified_at":"2026-10-13T15:17:50+00:00","first_seen_at":"2026-10-23T19:35:23+00:00","fetched_at":"2026-10-23T19:35:23+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}