CVE-2026-33032
Nginx UI: Unauthenticated MCP Endpoint Allows Remote Nginx Takeover
Nginx UI is a web user interface for the Nginx web server. In versions 2.3.5 and prior, the nginx-ui MCP (Model Context Protocol) integration exposes two HTTP endpoints: /mcp and /mcp_message. While /mcp requires both IP whitelisting and authentication (AuthRequired() middleware), the /mcp_message endpoint only applies IP whitelisting - and the default IP whitelist is empty, which the middleware treats as "allow all". This means any network attacker can invoke all MCP tools without authentication, including restarting nginx, creating/modifying/deleting nginx configuration files, and triggering automatic config reloads - achieving complete nginx service takeover. At time of publication, there are no publicly available patches.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
9.8
Nginx UI: Unauthenticated MCP Endpoint Allows Remote Nginx Takeover
Nginx UI is a web user interface for the Nginx web server. In versions 2.3.5 and prior, the nginx-ui MCP (Model Context Protocol) integration exposes two HTTP endpoints: /mcp and /mcp_message. While /mcp requires both IP whitelisting and authentication (AuthRequired() middleware), the /mcp_message endpoint only applies IP whitelisting - and the default IP whitelist is empty, which the middleware treats as "allow all". This means any network attacker can invoke all MCP tools without authentication, including restarting nginx, creating/modifying/deleting nginx configuration files, and triggering automatic config reloads - achieving complete nginx service takeover. At time of publication, there are no publicly available patches.
- Record
CVE-2026-33032- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-306
- Updated
- 2026-11-02
EUVDEUVD-2026-17158
9.8
Nginx UI is a web user interface for the Nginx web server. In versions 2.3.5 and prior, the nginx-ui MCP (Model Context Protocol) integration exposes two HTTP endpoints: /mcp and /mcp_message. While /mcp requires both IP whitelisting and authentication (AuthRequired() middleware), the /mcp_message endpoint only applies IP whitelisting - and the default IP whitelist is empty, which the middleware treats as "allow all". This means any network attacker can invoke all MCP tools without authentication, including restarting nginx, creating/modifying/deleting nginx configuration files, and triggering automatic config reloads - achieving complete nginx service takeover. At time of publication, there are no publicly available patches.
- Record
EUVD-2026-17158- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-h6c2-x2m2-mwhf
9.8
nginx-ui's Unauthenticated MCP Endpoint Allows Remote Nginx Takeover
Summary
The nginx-ui MCP (Model Context Protocol) integration exposes two HTTP endpoints: /mcp and /mcp_message. While /mcp requires both IP whitelisting and authentication (AuthRequired() middleware), the /mcp_message endpoint only applies IP whitelisting - and the default IP whitelist is empty, which the middleware treats as "allow all". This means any network attacker can invoke all MCP tools without authentication, including restarting nginx, creating/modifying/deleting nginx configuration files, and triggering automatic config reloads - achieving complete nginx service takeover.
Details
Vulnerable Code
mcp/router.go:9-17 - Auth asymmetry between endpoints
func InitRouter(r *gin.Engine) {
r.Any("/mcp", middleware.IPWhiteList(), middleware.AuthRequired(),
func(c *gin.Context) {
mcp.ServeHTTP(c)
})
r.Any("/mcp_message", middleware.IPWhiteList(),
func(c *gin.Context) {
mcp.ServeHTTP(c)
})
}
The /mcp endpoint has middleware.AuthRequired(), but /mcp_message does not. Both endpoints route to the same mcp.ServeHTTP() handler, which processes all MCP tool invocations.
internal/middleware/ip_whitelist.go:11-26 - Empty whitelist allows all
func IPWhiteList() gin.HandlerFunc {
return func(c *gin.Context) {
clientIP := c.ClientIP()
if len(settings.AuthSettings.IPWhiteList) == 0 || clientIP == "" || clientIP == "127.0.0.1" || clientIP == "::1" {
c.Next()
return
}
// ...
}
}
When IPWhiteList is empty (the default - settings/auth.go initializes Auth{} with no whitelist), the middleware allows all requests through. This is a fail-open design.
Available MCP Tools (all invocable without auth)
From mcp/nginx/:
restart_nginx- restart the nginx processreload_nginx- reload nginx configurationnginx_status- read nginx status
From mcp/config/:
nginx_config_add- create new nginx config filesnginx_config_modify- modify existing config filesnginx_config_list- list all configurationsnginx_config_get- read config file contentsnginx_config_enable- enable/disable sitesnginx_config_rename- rename config filesnginx_config_mkdir- create directoriesnginx_config_history- view config historynginx_config_base_path- get nginx config directory path
Attack Scenario
- Attacker sends HTTP requests to
http://target:9000/mcp_message(default port) - No authentication is required - IP whitelist is empty by default
- Attacker invokes
nginx_config_modifywithrelative_path="nginx.conf"to rewrite the main nginx configuration (e.g., inject a reverse proxy that logsAuthorizationheaders) nginx_config_addauto-reloads nginx (config_add.go:74), or attacker callsreload_nginxdirectly- All traffic through nginx is now under attacker control - requests intercepted, redirected, or denied
PoC
1. The auth asymmetry is visible by comparing the two route registrations in mcp/router.go:
// Line 10 - /mcp requires auth:
r.Any("/mcp", middleware.IPWhiteList(), middleware.AuthRequired(), func(c *gin.Context) { mcp.ServeHTTP(c) })
// Line 14 - /mcp_message does NOT:
r.Any("/mcp_message", middleware.IPWhiteList(), func(c *gin.Context) { mcp.ServeHTTP(c) })
Both call the same mcp.ServeHTTP(c) handler, which dispatches all tool invocations.
2. The IP whitelist defaults to empty, allowing all IPs. From settings/auth.go:
var AuthSettings = &Auth{
BanThresholdMinutes: 10,
MaxAttempts: 10,
// IPWhiteList is not initialized - defaults to nil/empty slice
}
And the middleware at internal/middleware/ip_whitelist.go:14 passes all requests when the list is empty:
if len(settings.AuthSettings.IPWhiteList) == 0 || clientIP == "" || clientIP == "127.0.0.1" || clientIP == "::1" {
c.Next()
return
}
3. Config writes auto-reload nginx. From mcp/config/config_add.go:
err :=…
- Record
GHSA-h6c2-x2m2-mwhf- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-306
- Updated
- 2026-11-02
NVD
9.8
Nginx UI is a web user interface for the Nginx web server. In versions 2.3.5 and prior, the nginx-ui MCP (Model Context Protocol) integration exposes two HTTP endpoints: /mcp and /mcp_message. While /mcp requires both IP whitelisting and authentication (AuthRequired() middleware), the /mcp_message endpoint only applies IP whitelisting - and the default IP whitelist is empty, which the middleware treats as "allow all". This means any network attacker can invoke all MCP tools without authentication, including restarting nginx, creating/modifying/deleting nginx configuration files, and triggering automatic config reloads - achieving complete nginx service takeover. At time of publication, there are no publicly available patches.
- Record
CVE-2026-33032- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-306
- Updated
- 2026-11-02
OSV
9.8
Nginx UI: Unauthenticated MCP Endpoint Allows Remote Nginx Takeover
Nginx UI is a web user interface for the Nginx web server. In versions 2.3.5 and prior, the nginx-ui MCP (Model Context Protocol) integration exposes two HTTP endpoints: /mcp and /mcp_message. While /mcp requires both IP whitelisting and authentication (AuthRequired() middleware), the /mcp_message endpoint only applies IP whitelisting - and the default IP whitelist is empty, which the middleware treats as "allow all". This means any network attacker can invoke all MCP tools without authentication, including restarting nginx, creating/modifying/deleting nginx configuration files, and triggering automatic config reloads - achieving complete nginx service takeover. At time of publication, there are no publicly available patches.
- Record
CVE-2026-33032- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-306
- Updated
- 2026-11-02
OSVGHSA-h6c2-x2m2-mwhf
9.8
nginx-ui's Unauthenticated MCP Endpoint Allows Remote Nginx Takeover
Summary
The nginx-ui MCP (Model Context Protocol) integration exposes two HTTP endpoints: /mcp and /mcp_message. While /mcp requires both IP whitelisting and authentication (AuthRequired() middleware), the /mcp_message endpoint only applies IP whitelisting - and the default IP whitelist is empty, which the middleware treats as "allow all". This means any network attacker can invoke all MCP tools without authentication, including restarting nginx, creating/modifying/deleting nginx configuration files, and triggering automatic config reloads - achieving complete nginx service takeover.
Details
Vulnerable Code
mcp/router.go:9-17 - Auth asymmetry between endpoints
func InitRouter(r *gin.Engine) {
r.Any("/mcp", middleware.IPWhiteList(), middleware.AuthRequired(),
func(c *gin.Context) {
mcp.ServeHTTP(c)
})
r.Any("/mcp_message", middleware.IPWhiteList(),
func(c *gin.Context) {
mcp.ServeHTTP(c)
})
}
The /mcp endpoint has middleware.AuthRequired(), but /mcp_message does not. Both endpoints route to the same mcp.ServeHTTP() handler, which processes all MCP tool invocations.
internal/middleware/ip_whitelist.go:11-26 - Empty whitelist allows all
func IPWhiteList() gin.HandlerFunc {
return func(c *gin.Context) {
clientIP := c.ClientIP()
if len(settings.AuthSettings.IPWhiteList) == 0 || clientIP == "" || clientIP == "127.0.0.1" || clientIP == "::1" {
c.Next()
return
}
// ...
}
}
When IPWhiteList is empty (the default - settings/auth.go initializes Auth{} with no whitelist), the middleware allows all requests through. This is a fail-open design.
Available MCP Tools (all invocable without auth)
From mcp/nginx/:
restart_nginx- restart the nginx processreload_nginx- reload nginx configurationnginx_status- read nginx status
From mcp/config/:
nginx_config_add- create new nginx config filesnginx_config_modify- modify existing config filesnginx_config_list- list all configurationsnginx_config_get- read config file contentsnginx_config_enable- enable/disable sitesnginx_config_rename- rename config filesnginx_config_mkdir- create directoriesnginx_config_history- view config historynginx_config_base_path- get nginx config directory path
Attack Scenario
- Attacker sends HTTP requests to
http://target:9000/mcp_message(default port) - No authentication is required - IP whitelist is empty by default
- Attacker invokes
nginx_config_modifywithrelative_path="nginx.conf"to rewrite the main nginx configuration (e.g., inject a reverse proxy that logsAuthorizationheaders) nginx_config_addauto-reloads nginx (config_add.go:74), or attacker callsreload_nginxdirectly- All traffic through nginx is now under attacker control - requests intercepted, redirected, or denied
PoC
1. The auth asymmetry is visible by comparing the two route registrations in mcp/router.go:
// Line 10 - /mcp requires auth:
r.Any("/mcp", middleware.IPWhiteList(), middleware.AuthRequired(), func(c *gin.Context) { mcp.ServeHTTP(c) })
// Line 14 - /mcp_message does NOT:
r.Any("/mcp_message", middleware.IPWhiteList(), func(c *gin.Context) { mcp.ServeHTTP(c) })
Both call the same mcp.ServeHTTP(c) handler, which dispatches all tool invocations.
2. The IP whitelist defaults to empty, allowing all IPs. From settings/auth.go:
var AuthSettings = &Auth{
BanThresholdMinutes: 10,
MaxAttempts: 10,
// IPWhiteList is not initialized - defaults to nil/empty slice
}
And the middleware at internal/middleware/ip_whitelist.go:14 passes all requests when the list is empty:
if len(settings.AuthSettings.IPWhiteList) == 0 || clientIP == "" || clientIP == "127.0.0.1" || clientIP == "::1" {
c.Next()
return
}
3. Config writes auto-reload nginx. From mcp/config/config_add.go:
err :=…
- Record
GHSA-h6c2-x2m2-mwhf- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-306
- Updated
- 2026-11-02
OSVGO-2026-4904 No score
nginx-ui's Unauthenticated MCP Endpoint Allows Remote Nginx Takeover in github.com/0xJacky/Nginx-UI
nginx-ui's Unauthenticated MCP Endpoint Allows Remote Nginx Takeover in github.com/0xJacky/Nginx-UI
- Record
GO-2026-4904- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:21483-1 No score
Security update for govulncheck-vulndb
This update for govulncheck-vulndb fixes the following issues:
- Update to version 0.0.20260723T184607 2026-07-23T18:46:07Z (jsc#PED-11136).
Go CVE Numbering Authority IDs added or updated with aliases:
- GO-2026-4730 CVE-2026-33022 GHSA-cv4x-93xx-wgfj
- GO-2026-4761 CVE-2026-33211 GHSA-j5q5-j9gm-2w5c
- GO-2026-5102 CVE-2026-45021 GHSA-3vcp-chfh-f6r2
- GO-2026-5272 CVE-2026-40938 GHSA-94jr-7pqp-xhcq
- GO-2026-5486 CVE-2026-40924 GHSA-m2cx-gpqf-qf74
- GO-2026-5542 CVE-2026-40090 GHSA-pj97-4p9w-gx3q
- GO-2026-5630 CVE-2026-25542 GHSA-rmx9-2pp3-xhcr
- GO-2026-5643 CVE-2026-40923 GHSA-rx35-6rhx-7858
- GO-2026-5675 CVE-2026-41492 GHSA-vvf7-6rmr-m29q
- GO-2026-5711 CVE-2026-40161 GHSA-wjxp-xrpv-xpff
- GO-2026-5746 CVE-2026-41567 GHSA-x86f-5xw2-fm2r
- GO-2026-5749 CVE-2026-41328 GHSA-x92x-px7w-4gx4
- GO-2026-5837 CVE-2026-44840 GHSA-q2m9-6jp9-c6mc
- GO-2026-5929 CVE-2026-44342 GHSA-26v7-h57m-gh9m
- GO-2026-5930 CVE-2026-33655 GHSA-6qcr-qxgr-m7fv
- GO-2026-5933 GHSA-3g4q-2f67-2gvh
- GO-2026-5934 GHSA-59qp-cfj3-rp64
- GO-2026-5935 GHSA-7856-g3gv-9wq8
- GO-2026-5936 CVE-2026-53552 GHSA-26rh-24rg-j3vv
- GO-2026-5937 CVE-2026-53508 GHSA-2jcc-mxv7-p3f9
- GO-2026-5938 CVE-2026-53553 GHSA-4g5x-hcwm-82jw
- GO-2026-5939 CVE-2026-10517 GHSA-698x-9w2p-7vvp
- GO-2026-5940 CVE-2026-53572 GHSA-6w3m-4hhp-775q
- GO-2026-5941 CVE-2026-53487 GHSA-gvhc-wv3v-7pf8
- GO-2026-5942 CVE-2026-46600
- GO-2026-5944 CVE-2026-50197 GHSA-659f-rgp5-w4wf
- GO-2026-5945 CVE-2026-6815 GHSA-rmxx-v9rj-vpvg
- GO-2026-5946 CVE-2026-52831 GHSA-v5px-423j-pf7p
- GO-2026-5947 CVE-2026-53649 GHSA-xqhv-chqm-fhcc
- GO-2026-5948 CVE-2026-50554 GHSA-588f-fvcv-xhvf
- GO-2026-5949 CVE-2026-50553 GHSA-rqrh-8wpv-x7hh
- GO-2026-5950 CVE-2026-53602 GHSA-339v-266x-79xr
- GO-2026-5951 CVE-2026-10219 GHSA-6jm8-4fhr-5w64
- GO-2026-5952 CVE-2026-49834 GHSA-9vcr-p3rj-q5q6
- GO-2026-5953 CVE-2026-9094 GHSA-c9w5-qp6m-m395
- GO-2026-5956 CVE-2026-55252 GHSA-h5g6-xmh4-hc37
- GO-2026-5957 CVE-2026-54158 GHSA-5xfx-xj4h-5p7r
- GO-2026-5958 CVE-2026-54068 GHSA-gcm7-57gf-953c
- GO-2026-5959 CVE-2026-54072 GHSA-h29v-hj44-q8cv
- GO-2026-5961 CVE-2026-54069 GHSA-hvr9-72v2-fff3
- GO-2026-5962 CVE-2026-54088 GHSA-m93h-4hw7-5qcm
- GO-2026-5963 CVE-2026-54067 GHSA-mvjr-vv3c-w4qv
- GO-2026-5964 CVE-2026-54066 GHSA-p4m3-mgmm-c664
- GO-2026-5965 CVE-2026-54070 GHSA-w7cg-whh7-xp28
- GO-2026-5966 CVE-2026-54089 GHSA-xqp3-jq6g-x3qm
- GO-2026-5967 CVE-2026-50551 GHSA-56mp-4f3v-fgj2
- GO-2026-5968 CVE-2026-54174 GHSA-fpg8-7664-jc5q
- GO-2026-5969 GHSA-g936-7jqj-mwv8
- GO-2026-5970 CVE-2026-56852
- GO-2026-5973 CVE-2026-54250 GHSA-jxr7-mqhw-9p98
- GO-2026-5974 CVE-2026-44300 GHSA-wmj8-9953-vff5
- GO-2026-5975 CVE-2026-50018 GHSA-42j2-w334-qxw7
- GO-2026-5976 CVE-2026-50141 GHSA-g7mm-9vx7-jm7h
- GO-2026-5977 CVE-2026-50013 GHSA-qrh4-p6v4-mrfg
- GO-2026-5978 CVE-2026-50125 GHSA-qw5r-ppcg-f8rj
- GO-2026-5979 CVE-2026-50006 GHSA-xrcf-6jh3-ggvx
- GO-2026-5980 CVE-2026-50158 GHSA-2c7f-fxww-6w6c
- GO-2026-5981 GHSA-mqxv-9rm6-w8qc
- GO-2026-5982 GHSA-pqg7-v6wh-3pfp
- GO-2026-5984 CVE-2026-53604 GHSA-2p2f-px33-4vv5
- GO-2026-5985 GHSA-7rx3-5wx3-5v76
- GO-2026-5986 CVE-2026-61699 GHSA-cm26-5974-52h8
- GO-2026-5987 CVE-2026-55513 GHSA-g4x6-jcvr-9m3g
- GO-2026-5988 CVE-2026-54628 GHSA-hwrq-8wxh-q4xv
- GO-2026-5989 CVE-2026-55512 GHSA-m3cx-mwpg-32jg
- GO-2026-5990 CVE-2026-54629 GHSA-mf78-3rpf-r784
- GO-2026-5991 CVE-2026-53603 GHSA-q4vm-pq3q-8wgq
- GO-2026-5992 CVE-2026-61549 GHSA-qf34-295c-26v8
- GO-2026-5996 CVE-2026-54450 GHSA-pph6-vfjv-vpjw
- GO-2026-5997 CVE-2026-54452 GHSA-xgch-x3mx-cm3c
- GO-2026-5998 CVE-2026-54495 GHSA-398h-7f66-3h4p
- GO-2026-5999 CVE-2026-10814 GHSA-jh6h-v6mp-h22v
- GO-2026-6002 CVE-2026-58196 GHSA-pr64-jmmf-jp54
- GO-2026-6003 CVE-2026-53714 GHSA-22xc-xg2r-9j7v
- GO-2026-6004 CVE-2026-52833 GHSA-3v79-m2cg-89ww
- GO-2026-6005 CVE-2026-53715 GHSA-8fv2-88gg-hm7q
- GO-2026-6006 CVE-2026-53716 GHSA-cxpq-8v7q-cg56 *…
- Record
openSUSE-SU-2026:21483-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:1205-1 No score
Security update for govulncheck-vulndb
This update for govulncheck-vulndb fixes the following issues:
Update to version 0.0.20260402T184258 2026-04-02T18:42:58Z (jsc#PED-11136).
Go CVE Numbering Authority IDs added or updated with aliases:
- GO-2026-4518 CVE-2026-32286 GHSA-jqcq-xjh3-6g23
- GO-2026-4753 CVE-2026-33487 GHSA-479m-364c-43vc
- GO-2026-4760 GHSA-hwqm-qvj9-4jr2
- GO-2026-4762 CVE-2026-33186 GHSA-p77j-4mvh-x3m3
- GO-2026-4764 GHSA-pcgw-qcv5-h8ch
- GO-2026-4858 CVE-2026-33747 GHSA-4c29-8rgm-jvjj
- GO-2026-4859 CVE-2026-33748 GHSA-4vrq-3vrq-g6gg
- GO-2026-4863 GHSA-g9ww-x58f-9g6m
- GO-2026-4872 CVE-2026-33907 GHSA-55q8-2gwx-29pc
- GO-2026-4873 CVE-2026-33906 GHSA-87j9-m7x6-hvw2
- GO-2026-4874 CVE-2026-33904 GHSA-9h59-p45g-445h
- GO-2026-4875 CVE-2026-33903 GHSA-f2f3-9cx3-wcmf
- GO-2026-4876 GHSA-prh4-vhfh-24mj
- GO-2026-4880 CVE-2026-32695 GHSA-67jx-r9pv-98rj
- GO-2026-4883 CVE-2026-33997 GHSA-pxq6-2prw-chj9
- GO-2026-4887 CVE-2026-34040 GHSA-x744-4wpc-v9h2
- GO-2026-4888 CVE-2026-26060 GHSA-3458-r943-hmx4
- GO-2026-4889 CVE-2026-26061 GHSA-99hj-44vg-hfcp
- GO-2026-4890 CVE-2026-34042 GHSA-x34h-54cw-9825
- GO-2026-4891 CVE-2026-34041 GHSA-xmgr-9pqc-h5vw
- GO-2026-4892 CVE-2026-29180 GHSA-m2h6-4xpq-qw3m
- GO-2026-4893 CVE-2026-33433 GHSA-qr99-7898-vr7c
- GO-2026-4894 CVE-2026-32241 GHSA-vchx-5pr6-ffx2
- GO-2026-4896 CVE-2026-34204 GHSA-3rh2-v3gr-35p9
- GO-2026-4897 GHSA-46wh-3698-f2cx
- GO-2026-4899 GHSA-c279-989m-238f
- GO-2026-4901 CVE-2026-33030 GHSA-5hf2-vhj6-gj9m
- GO-2026-4902 CVE-2026-33029 GHSA-cp8r-8jvw-v3qg
- GO-2026-4903 CVE-2026-33026 GHSA-fhh2-gg7w-gwpq
- GO-2026-4904 CVE-2026-33032 GHSA-h6c2-x2m2-mwhf
- GO-2026-4905 CVE-2026-27018 GHSA-jjwv-57xh-xr6r
- GO-2026-4906 CVE-2026-33028 GHSA-m468-xcm6-fxg4
- GO-2026-4907 CVE-2026-33027 GHSA-m8p8-53vf-8357
- GO-2026-4911 CVE-2026-33990 GHSA-x2f5-332j-9xwq
- GO-2026-4912 CVE-2026-34389 GHSA-4f9r-x588-pp2h
- GO-2026-4913 CVE-2026-34386 GHSA-9p23-p2m4-2r4m
- GO-2026-4914 CVE-2026-34385 GHSA-v895-833r-8c45
- GO-2026-4915 CVE-2026-34388 GHSA-w254-4hp5-7cvv
- GO-2026-4916 CVE-2026-26233 GHSA-247x-7qw8-fp98
- GO-2026-4919 CVE-2026-33634 GHSA-69fq-xp46-6x23
- Record
SUSE-SU-2026:1205-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
github.com/0xJacky/Nginx-UIGo |
through 1.99 | None known |
github.com/0xJacky/Nginx-UIGo |
All versions | None known |
govulncheck-vulndbopenSUSE:Leap 15.6 From an advisory covering 34 CVEs |
before 0.0.20260402T184258-150000.1.158.1 | 0.0.20260402T184258-150000.1.158.1 |
govulncheck-vulndbopenSUSE:Leap 16.0 From an advisory covering 1734 CVEs |
before 0.0.20260723T184607-160000.1.1 | 0.0.20260723T184607-160000.1.1 |
Public exploits
Links only. Every CVE stores no exploit code.
| Source | Link | Date |
|---|---|---|
| PoC in GitHub | Twinson333/cve-2026-33032-scanner | 2026-04-03 |
| PoC in GitHub | Shreda/CVE-2026-33032-nginx-ui-vuln-lab | 2026-04-17 |
| PoC in GitHub | keraattin/CVE-2026-33032 | 2026-04-18 |
| PoC in GitHub | Baba01hacker666/CVE-2026-33032 | 2026-08-21 |
| Nuclei | Nginx UI - Broken Access Control |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, exploits, facts | ||
| first indexed | CVE List, EUVD, GitHub Advisories, Nuclei, NVD, OSV, PoC in GitHub |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-33032 is a critical vulnerability (CVSS 9.8) in 0xjacky Nginx-ui, published March 30, 2026. Public exploit code exists. EPSS puts the chance of exploitation in the next 30 days at 35.3%, the 98th percentile. No source names a fixed version.
References
github.com/0xJacky/nginx-ui/security/advisories/GHSA-h6c2-x2m2-mwhf
websec.net/blog/cve-2026-33032-unauthenticated-nginx-ui-mcp-takeover-69e1200f9fceb1f3fbe9c47f
github.com/0xJacky/nginx-ui/blob/f89f8ff8223478988f7ed49bf1d3dbf2de44bf92/internal/middleware/ip_whitelist.go
github.com/0xJacky/nginx-ui/blob/f89f8ff8223478988f7ed49bf1d3dbf2de44bf92/mcp/router.go
nvd.nist.gov/vuln/detail/CVE-2026-33032
github.com/advisories/GHSA-h6c2-x2m2-mwhf
Show 194 moreShow less
github.com/CVEProject/cvelistV5/tree/main/cves/2026/33xxx/CVE-2026-33032.json
github.com/0xJacky/nginx-ui
suse.com/support/update/announcement/2026/suse-su-20261205-1
suse.com/security/cve/CVE-2026-26060
suse.com/security/cve/CVE-2026-26061
suse.com/security/cve/CVE-2026-26233
suse.com/security/cve/CVE-2026-27018
suse.com/security/cve/CVE-2026-29180
suse.com/security/cve/CVE-2026-32241
suse.com/security/cve/CVE-2026-32286
suse.com/security/cve/CVE-2026-32695
suse.com/security/cve/CVE-2026-33026
suse.com/security/cve/CVE-2026-33027
suse.com/security/cve/CVE-2026-33028
suse.com/security/cve/CVE-2026-33029
suse.com/security/cve/CVE-2026-33030
suse.com/security/cve/CVE-2026-33032
suse.com/security/cve/CVE-2026-33186
suse.com/security/cve/CVE-2026-33433
suse.com/security/cve/CVE-2026-33487
suse.com/security/cve/CVE-2026-33634
suse.com/security/cve/CVE-2026-33747
suse.com/security/cve/CVE-2026-33748
suse.com/security/cve/CVE-2026-33903
suse.com/security/cve/CVE-2026-33904
suse.com/security/cve/CVE-2026-33906
suse.com/security/cve/CVE-2026-33907
suse.com/security/cve/CVE-2026-33990
suse.com/security/cve/CVE-2026-33997
suse.com/security/cve/CVE-2026-34040
suse.com/security/cve/CVE-2026-34041
suse.com/security/cve/CVE-2026-34042
suse.com/security/cve/CVE-2026-34204
suse.com/security/cve/CVE-2026-34385
suse.com/security/cve/CVE-2026-34386
suse.com/security/cve/CVE-2026-34388
suse.com/security/cve/CVE-2026-34389
suse.com/security/cve/CVE-2016-11063
suse.com/security/cve/CVE-2016-11066
suse.com/security/cve/CVE-2016-11067
suse.com/security/cve/CVE-2016-11068
suse.com/security/cve/CVE-2016-11069
suse.com/security/cve/CVE-2016-11070
suse.com/security/cve/CVE-2016-11071
suse.com/security/cve/CVE-2016-11072
suse.com/security/cve/CVE-2016-11073
suse.com/security/cve/CVE-2016-11074
suse.com/security/cve/CVE-2016-11075
suse.com/security/cve/CVE-2016-11076
suse.com/security/cve/CVE-2016-11077
suse.com/security/cve/CVE-2016-11078
suse.com/security/cve/CVE-2016-11079
suse.com/security/cve/CVE-2016-11080
suse.com/security/cve/CVE-2016-11081
suse.com/security/cve/CVE-2016-11082
suse.com/security/cve/CVE-2016-11083
suse.com/security/cve/CVE-2016-11084
suse.com/security/cve/CVE-2017-18870
suse.com/security/cve/CVE-2017-18871
suse.com/security/cve/CVE-2017-18872
suse.com/security/cve/CVE-2017-18873
suse.com/security/cve/CVE-2017-18874
suse.com/security/cve/CVE-2017-18875
suse.com/security/cve/CVE-2017-18876
suse.com/security/cve/CVE-2017-18877
suse.com/security/cve/CVE-2017-18878
suse.com/security/cve/CVE-2017-18879
suse.com/security/cve/CVE-2017-18883
suse.com/security/cve/CVE-2017-18884
suse.com/security/cve/CVE-2017-18885
suse.com/security/cve/CVE-2017-18886
suse.com/security/cve/CVE-2017-18887
suse.com/security/cve/CVE-2017-18888
suse.com/security/cve/CVE-2017-18889
suse.com/security/cve/CVE-2017-18890
suse.com/security/cve/CVE-2017-18891
suse.com/security/cve/CVE-2017-18892
suse.com/security/cve/CVE-2017-18893
suse.com/security/cve/CVE-2017-18894
suse.com/security/cve/CVE-2017-18895
suse.com/security/cve/CVE-2017-18896
suse.com/security/cve/CVE-2017-18897
suse.com/security/cve/CVE-2017-18898
suse.com/security/cve/CVE-2017-18900
suse.com/security/cve/CVE-2017-18901
suse.com/security/cve/CVE-2017-18902
suse.com/security/cve/CVE-2017-18903
suse.com/security/cve/CVE-2017-18904
suse.com/security/cve/CVE-2017-18905
suse.com/security/cve/CVE-2017-18906
suse.com/security/cve/CVE-2017-18907
suse.com/security/cve/CVE-2017-18908
suse.com/security/cve/CVE-2017-18909
suse.com/security/cve/CVE-2017-18911
suse.com/security/cve/CVE-2017-18912
suse.com/security/cve/CVE-2017-18915
suse.com/security/cve/CVE-2017-18916
suse.com/security/cve/CVE-2017-18917
suse.com/security/cve/CVE-2017-18918
suse.com/security/cve/CVE-2018-21258
suse.com/security/cve/CVE-2019-8400
suse.com/security/cve/CVE-2021-25320
suse.com/security/cve/CVE-2022-45786
suse.com/security/cve/CVE-2023-26154
suse.com/security/cve/CVE-2023-32199
suse.com/security/cve/CVE-2023-34620
suse.com/security/cve/CVE-2023-43630
suse.com/security/cve/CVE-2023-43631
suse.com/security/cve/CVE-2023-43632
suse.com/security/cve/CVE-2023-43633
suse.com/security/cve/CVE-2023-43634
suse.com/security/cve/CVE-2023-43635
suse.com/security/cve/CVE-2023-43636
suse.com/security/cve/CVE-2023-43637
suse.com/security/cve/CVE-2023-47108
suse.com/security/cve/CVE-2024-12886
suse.com/security/cve/CVE-2024-21635
suse.com/security/cve/CVE-2024-25621
suse.com/security/cve/CVE-2024-41260
suse.com/security/cve/CVE-2024-41265
suse.com/security/cve/CVE-2024-44905
suse.com/security/cve/CVE-2024-52284
suse.com/security/cve/CVE-2024-53412
suse.com/security/cve/CVE-2024-58259
suse.com/security/cve/CVE-2024-58260
suse.com/security/cve/CVE-2024-58267
suse.com/security/cve/CVE-2024-58269
suse.com/security/cve/CVE-2024-6717
suse.com/security/cve/CVE-2025-0426
suse.com/security/cve/CVE-2025-10543
suse.com/security/cve/CVE-2025-10545
suse.com/security/cve/CVE-2025-10630
suse.com/security/cve/CVE-2025-10678
suse.com/security/cve/CVE-2025-10954
suse.com/security/cve/CVE-2025-11374
suse.com/security/cve/CVE-2025-11375
suse.com/security/cve/CVE-2025-11393
suse.com/security/cve/CVE-2025-11579
suse.com/security/cve/CVE-2025-11621
suse.com/security/cve/CVE-2025-11776
suse.com/security/cve/CVE-2025-11777
suse.com/security/cve/CVE-2025-11794
suse.com/security/cve/CVE-2025-12044
suse.com/security/cve/CVE-2025-12419
suse.com/security/cve/CVE-2025-12421
suse.com/security/cve/CVE-2025-12559
suse.com/security/cve/CVE-2025-12689
suse.com/security/cve/CVE-2025-12756
suse.com/security/cve/CVE-2025-13281
suse.com/security/cve/CVE-2025-13324
suse.com/security/cve/CVE-2025-13352
suse.com/security/cve/CVE-2025-13353
suse.com/security/cve/CVE-2025-13357
suse.com/security/cve/CVE-2025-13425
suse.com/security/cve/CVE-2025-13523
suse.com/security/cve/CVE-2025-13767
suse.com/security/cve/CVE-2025-13821
suse.com/security/cve/CVE-2025-13870
suse.com/security/cve/CVE-2025-13888
suse.com/security/cve/CVE-2025-14273
suse.com/security/cve/CVE-2025-14350
suse.com/security/cve/CVE-2025-14435
suse.com/security/cve/CVE-2025-14443
suse.com/security/cve/CVE-2025-14525
suse.com/security/cve/CVE-2025-14573
suse.com/security/cve/CVE-2025-14764
suse.com/security/cve/CVE-2025-14822
suse.com/security/cve/CVE-2025-14986
suse.com/security/cve/CVE-2025-14987
suse.com/security/cve/CVE-2025-15107
suse.com/security/cve/CVE-2025-15558
suse.com/security/cve/CVE-2025-21613
suse.com/security/cve/CVE-2025-22870
suse.com/security/cve/CVE-2025-22873
suse.com/security/cve/CVE-2025-23266
suse.com/security/cve/CVE-2025-23267
suse.com/security/cve/CVE-2025-26625
suse.com/security/cve/CVE-2025-27093
suse.com/security/cve/CVE-2025-2786
suse.com/security/cve/CVE-2025-2842
suse.com/security/cve/CVE-2025-2843
suse.com/security/cve/CVE-2025-31133
suse.com/security/cve/CVE-2025-34410
suse.com/security/cve/CVE-2025-34429
suse.com/security/cve/CVE-2025-34430
suse.com/security/cve/CVE-2025-41115
suse.com/security/cve/CVE-2025-41117
suse.com/security/cve/CVE-2025-41118
suse.com/security/cve/CVE-2025-41410
suse.com/security/cve/CVE-2025-41436
suse.com/security/cve/CVE-2025-41443
suse.com/security/cve/CVE-2025-44001
suse.com/security/cve/CVE-2025-44004
suse.com/security/cve/CVE-2025-44005
Left out here: 1,543 references and the rest of 3 source descriptions. The JSON record has them.