{"items":[{"id":"NVI-00011863","kind":"vulnerability","title":"Nginx UI: MCP nginx_config_add skips config directive validation → authenticated nginx directive injection (RCE on the official image)","revision":3,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-76pm-mq2q-9gcr","CVE-2026-84317"],"plain_summary":"GitHub lists this reviewed advisory for github.com/0xJacky/Nginx-UI. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-03461db27e2387152bbbb333a064c273"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-10-15T20:11:08.000Z","value":"8.8 high","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-488f601429f9da5bcf87b6b495230d4b"},{"kind":"EPSS","as_of":"2026-11-06T12:00:23.000Z","value":"0.478%","meaning":"FIRST EPSS model v2026.06.15; exploitation probability over 30 days, percentile 0.41422. Missing scores are unknown.","source_id":"sr-03461db27e2387152bbbb333a064c273"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-488f601429f9da5bcf87b6b495230d4b","url":"https://github.com/advisories/GHSA-76pm-mq2q-9gcr","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-76pm-mq2q-9gcr","publisher":"GitHub Advisory Database","observed_at":"2026-10-31T23:14:22.124Z"},{"id":"sr-03461db27e2387152bbbb333a064c273","url":"https://www.first.org/epss/data.html","basis":"official_catalog","notes":"FIRST EPSS; probability of exploitation in the next 30 days, not local compromise. Dataset date/model retained; FIRST services terms apply.","title":"CVE-2026-84317","publisher":"FIRST EPSS","observed_at":"2026-11-07T00:50:47.054Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-488f601429f9da5bcf87b6b495230d4b"],"technology":"github.com/0xJacky/Nginx-UI","known_exclusions":[],"conditions_summary":"## Summary\n`internal/config/validation.go` (`ValidateConfigFile`) is a security control that blocks dangerous\nnginx directives — `js_*`, `perl_*`, `load_module` of the njs/perl modules, and `user root`. It is\nenforced on three of the four config-write paths: `api/config/add.go`, `api/config/modify.go`, and\n`mcp/config/config_modify.go`. The fourth path — the MCP tool `nginx_config_add`\n(`mcp/config/config_add.go`) — does NOT call it: it writes the caller-supplied `content` straight to\ndisk and reloads nginx. An authenticated MCP caller (or an MCP agent induced via prompt injection)\ncan therefore inject exactly the directives the control is meant to block, leading to nginx code\nexecution on deployments where the njs/perl module is available (e.g. the official Docker image).\n\n## Root cause — an incomplete hardening patch\nCommit `3e411d38` (\"Harden config write paths\", 2026-04-21) introduced `ValidateConfigFile` and\nwired it into the config-write paths — but its changeset touched only:\n  api/config/add.go (+6), api/config/modify.go (+8), internal/config/validation.go (+199),\n  mcp/config/config_modify.go (+5)\nIt did NOT touch `mcp/config/config_add.go`. So the MCP add path was left wi","public_affected_ranges":["< 1.9.10-0.20260703131214-23d1934099b0"]}],"null_published_at":"2026-11-07T22:29:26.090Z","source_updated_at":"2026-10-15T20:11:08.000Z","source_disclosed_at":"2026-10-15T20:11:07.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"Dated EPSS estimate updated; this is not a new disclosure or proof of exploitation.","null_first_observed_at":"2026-10-31T23:14:22.124Z"},{"id":"NVI-00011863","kind":"vulnerability","title":"Nginx UI: MCP nginx_config_add skips config directive validation → authenticated nginx directive injection (RCE on the official image)","revision":2,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-76pm-mq2q-9gcr","CVE-2026-84317"],"plain_summary":"GitHub lists this reviewed advisory for github.com/0xJacky/Nginx-UI. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-22d303c17ed56ef89830a91be5eba93d"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-10-15T20:11:08.000Z","value":"8.8 high","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-488f601429f9da5bcf87b6b495230d4b"},{"kind":"EPSS","as_of":"2026-11-01T12:00:16.000Z","value":"0.478%","meaning":"FIRST EPSS model v2026.06.15; exploitation probability over 30 days, percentile 0.4125. Missing scores are unknown.","source_id":"sr-22d303c17ed56ef89830a91be5eba93d"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-488f601429f9da5bcf87b6b495230d4b","url":"https://github.com/advisories/GHSA-76pm-mq2q-9gcr","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-76pm-mq2q-9gcr","publisher":"GitHub Advisory Database","observed_at":"2026-10-31T23:14:22.124Z"},{"id":"sr-22d303c17ed56ef89830a91be5eba93d","url":"https://www.first.org/epss/data.html","basis":"official_catalog","notes":"FIRST EPSS; probability of exploitation in the next 30 days, not local compromise. Dataset date/model retained; FIRST services terms apply.","title":"CVE-2026-84317","publisher":"FIRST EPSS","observed_at":"2026-11-01T14:28:32.288Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-488f601429f9da5bcf87b6b495230d4b"],"technology":"github.com/0xJacky/Nginx-UI","known_exclusions":[],"conditions_summary":"## Summary\n`internal/config/validation.go` (`ValidateConfigFile`) is a security control that blocks dangerous\nnginx directives — `js_*`, `perl_*`, `load_module` of the njs/perl modules, and `user root`. It is\nenforced on three of the four config-write paths: `api/config/add.go`, `api/config/modify.go`, and\n`mcp/config/config_modify.go`. The fourth path — the MCP tool `nginx_config_add`\n(`mcp/config/config_add.go`) — does NOT call it: it writes the caller-supplied `content` straight to\ndisk and reloads nginx. An authenticated MCP caller (or an MCP agent induced via prompt injection)\ncan therefore inject exactly the directives the control is meant to block, leading to nginx code\nexecution on deployments where the njs/perl module is available (e.g. the official Docker image).\n\n## Root cause — an incomplete hardening patch\nCommit `3e411d38` (\"Harden config write paths\", 2026-04-21) introduced `ValidateConfigFile` and\nwired it into the config-write paths — but its changeset touched only:\n  api/config/add.go (+6), api/config/modify.go (+8), internal/config/validation.go (+199),\n  mcp/config/config_modify.go (+5)\nIt did NOT touch `mcp/config/config_add.go`. So the MCP add path was left wi","public_affected_ranges":["< 1.9.10-0.20260703131214-23d1934099b0"]}],"null_published_at":"2026-11-04T18:04:03.178Z","source_updated_at":"2026-10-15T20:11:08.000Z","source_disclosed_at":"2026-10-15T20:11:07.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"Dated EPSS estimate updated; this is not a new disclosure or proof of exploitation.","null_first_observed_at":"2026-10-31T23:14:22.124Z"},{"id":"NVI-00011863","kind":"vulnerability","title":"Nginx UI: MCP nginx_config_add skips config directive validation → authenticated nginx directive injection (RCE on the official image)","revision":1,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-76pm-mq2q-9gcr","CVE-2026-84317"],"plain_summary":"GitHub lists this reviewed advisory for github.com/0xJacky/Nginx-UI. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-488f601429f9da5bcf87b6b495230d4b"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-10-15T20:11:08.000Z","value":"8.8 high","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-488f601429f9da5bcf87b6b495230d4b"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-488f601429f9da5bcf87b6b495230d4b","url":"https://github.com/advisories/GHSA-76pm-mq2q-9gcr","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-76pm-mq2q-9gcr","publisher":"GitHub Advisory Database","observed_at":"2026-10-31T23:14:22.124Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-488f601429f9da5bcf87b6b495230d4b"],"technology":"github.com/0xJacky/Nginx-UI","known_exclusions":[],"conditions_summary":"## Summary\n`internal/config/validation.go` (`ValidateConfigFile`) is a security control that blocks dangerous\nnginx directives — `js_*`, `perl_*`, `load_module` of the njs/perl modules, and `user root`. It is\nenforced on three of the four config-write paths: `api/config/add.go`, `api/config/modify.go`, and\n`mcp/config/config_modify.go`. The fourth path — the MCP tool `nginx_config_add`\n(`mcp/config/config_add.go`) — does NOT call it: it writes the caller-supplied `content` straight to\ndisk and reloads nginx. An authenticated MCP caller (or an MCP agent induced via prompt injection)\ncan therefore inject exactly the directives the control is meant to block, leading to nginx code\nexecution on deployments where the njs/perl module is available (e.g. the official Docker image).\n\n## Root cause — an incomplete hardening patch\nCommit `3e411d38` (\"Harden config write paths\", 2026-04-21) introduced `ValidateConfigFile` and\nwired it into the config-write paths — but its changeset touched only:\n  api/config/add.go (+6), api/config/modify.go (+8), internal/config/validation.go (+199),\n  mcp/config/config_modify.go (+5)\nIt did NOT touch `mcp/config/config_add.go`. So the MCP add path was left wi","public_affected_ranges":["< 1.9.10-0.20260703131214-23d1934099b0"]}],"null_published_at":"2026-11-01T01:03:56.611Z","source_updated_at":"2026-10-15T20:11:08.000Z","source_disclosed_at":"2026-10-15T20:11:07.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"First indexed by Null; source disclosure date is shown separately.","null_first_observed_at":"2026-10-31T23:14:22.124Z"}],"next_cursor":null,"snapshot_revision":"42594"}