<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <id>https://db.gcve.eu/rss/recent/all/10</id>
  <title>Most recent entries from all</title>
  <updated>2026-10-23T19:43:19.354481+00:00</updated>
  <author>
    <name>Vulnerability-Lookup</name>
    <email>info@gcve.eu</email>
  </author>
  <link href="https://db.gcve.eu" rel="alternate"/>
  <generator uri="https://lkiesow.github.io/python-feedgen" version="1.0.0">python-feedgen</generator>
  <subtitle>Contains only the most 10 recent entries.</subtitle>
  <entry>
    <id>https://db.gcve.eu/vuln/cve-2026-84318</id>
    <title>CVE-2026-84318 — Nginx UI: MCP `nginx_config_add` Bypasses Directive Validation — Authenticated RCE</title>
    <updated>2026-10-23T19:43:19.382124+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> 0xJacky nginx-ui</p>
<p>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.</p></div>
    </content>
    <link href="https://db.gcve.eu/vuln/cve-2026-84318"/>
  </entry>
  <entry>
    <id>https://db.gcve.eu/vuln/ghsa-9jww-cxg5-rj9m</id>
    <title>GHSA-9jww-cxg5-rj9m — Nginx UI: MCP `nginx_config_add` Bypasses Directive Validation — Authenticated RCE</title>
    <updated>2026-10-23T19:43:19.382269+00:00</updated>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml"><p><strong>Affected:</strong> Go: github.com/0xJacky/Nginx-UI</p>
<p>### Summary</p>
<p>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.</p>
<p>### Details</p>
<p>`api/config/add.go` (line 46) calls `config.ValidateConfigFile` before writing:</p>
<p>```go
err = config.ValidateConfigFile(path, content)  // validates directives, checks blocklist
if err != nil {
    cosy.ErrHandler(c, err)
    return
}
```</p>
<p>`mcp/config/config_add.go` (line 79) omits that call entirely and writes directly:</p>
<p>```go
err = os.WriteFile(path, []byte(content), 0644)  // no ValidateConfigFile, no blocklist check
...
res := nginx.Control(nginx.Reload)               // reload triggered immediately
```</p>
<p>`config.ValidateConfigFile` runs two checks:
- **`ValidateConfigContent`** — rejects control characters, enforces encoding.
- **`ValidateConfigDirectives`** — rejects a blocklist of dangerous directives: `perl`, `perl_modules`, `perl_require`, `perl_set`, `js_import`, `js_set`, `js_content`, `load_module` (restricted modules), `user root`, and others.</p>
<p>Neither check runs…</p></div>
    </content>
    <link href="https://db.gcve.eu/vuln/ghsa-9jww-cxg5-rj9m"/>
  </entry>
</feed>
