Servers and applications
GHSA-mfj4-8rf3-rpq6
Unauthenticated dependency inventory + version disclosure via `/api/licenses*`
- Severity
- Medium 5.3
- Published
- 12 Nov 2026
- Last changed
- 12 Nov 2026
- Added to UpHeron
- 12 Nov 2026
- Fixed in
- 2.9.1
- Attack
- Over the network · No login needed · No user action needed
- Attacker can
- Read some data
- CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N- Sources
- Project advisories (GitHub)
Description
Privilege required: none - unauthenticated.
GET /api/licenses, /api/licenses/backend, /api/licenses/frontend, and /api/licenses/stats return the full Go-module dependency list and component/version inventory of the running nginx-ui with no authentication. The /licenses group is attached to the bare /api root group, which carries only IPWhiteList() - and that is fail-open when the allowlist is empty (the default).
- license.InitRouter(root) (router/routers.go:76) registers the /licenses routes on the bare root := r.Group("/api", middleware.IPWhiteList()) (router/routers.go:71) - not inside any AuthRequired group (those are created later, at :91 onward).
- IPWhiteList() (internal/middleware/ip_whitelist.go) returns c.Next() when settings.AuthSettings.IPWhiteList is empty (default), so it is not an authentication barrier.
- GetBackendLicenses()/GetLicenses() (api/license/license.go) return the complete module dependency graph with versions and component metadata.
Workarounds
Configure the IP allowlist, or block /api/licenses at the reverse proxy until you can upgrade.
Affected software
| Software | Affected versions |
|---|---|
Nginx UIServers and applications · github:0xjacky/nginx-ui |
|
References
- GitHub Advisory Database https://github.com/advisories/GHSA-mfj4-8rf3-rpq6
- github.com https://github.com/0xJacky/nginx-ui/security/advisories/GHSA-mfj4-8rf3-rpq6