/

CVE-2026-107813

Severity:

HIGH RISK

(8.8)

Missing Authorization (CWE-862) in Nginx UI Cluster

CVE-2026-107813

Undergoing Analysis

Vulnerability type

Category:

Missing Authorization

CWE:

CWE-862

Impact:

Unauthorized cluster administration, credential exposure, and service disruption

Severity:

HIGH RISK

(8.8)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Nginx UI exposes cluster management and Nginx control operations to authenticated users without requiring a fresh secure-session or second-factor check. An attacker with access to a stolen or persisted JWT may modify cluster nodes and namespaces, access or replace node credentials, and trigger Nginx reload or restart operations.

Nginx UI exposes cluster management and Nginx control operations to authenticated users without requiring a fresh secure-session or second-factor check. An attacker with access to a stolen or persisted JWT may modify cluster nodes and namespaces, access or replace node credentials, and trigger Nginx reload or restart operations.

Affected context

The issue occurs in Nginx UI deployments using the cluster API routes for node, namespace, and Nginx lifecycle management. It becomes risky when an OTP-enabled user's JWT remains usable after authentication without a fresh step-up requirement, particularly if the token has been stolen, persisted, or accessed outside the intended session context.

The issue occurs in Nginx UI deployments using the cluster API routes for node, namespace, and Nginx lifecycle management. It becomes risky when an OTP-enabled user's JWT remains usable after authentication without a fresh step-up requirement, particularly if the token has been stolen, persisted, or accessed outside the intended session context.

Exploit preconditions

  • Attack surface: Authenticated cluster-management API routes - Required access: A valid stolen or persisted JWT belonging to an authenticated

OTP-enabled user

  • Trigger point: Requests to cluster node, namespace, reload, or restart operations - Why exploitation is possible: The routes check general authentication but do not

consistently require a secure session or fresh second-factor verification before

performing sensitive mutations and operational actions

  • Attack surface: Authenticated cluster-management API routes - Required access: A valid stolen or persisted JWT belonging to an authenticated

OTP-enabled user

  • Trigger point: Requests to cluster node, namespace, reload, or restart operations - Why exploitation is possible: The routes check general authentication but do not

consistently require a secure session or fresh second-factor verification before

performing sensitive mutations and operational actions

Why this happens

The underlying flaw is an incomplete authorization boundary for high-impact administrative operations. Sensitive cluster routes rely on an AuthRequired condition without also enforcing RequireSecureSession, allowing a bearer token that passed an earlier authentication step to authorize privileged actions without renewed assurance. This maps to CWE-862, Missing Authorization, because access control is insufficiently enforced for protected management functions.

The underlying flaw is an incomplete authorization boundary for high-impact administrative operations. Sensitive cluster routes rely on an AuthRequired condition without also enforcing RequireSecureSession, allowing a bearer token that passed an earlier authentication step to authorize privileged actions without renewed assurance. This maps to CWE-862, Missing Authorization, because access control is insufficiently enforced for protected management functions.

Potential impact

  • An attacker may create, modify, or delete cluster nodes.
  • An attacker could read or replace node credentials.
  • Namespace configuration may be altered without the intended step-up check.
  • Nginx services across affected nodes may be reloaded or restarted.
  • Service availability, routing behavior, or administrative control could be disrupted.
  • Modified credentials or configuration may enable further unauthorized access.
  • An attacker may create, modify, or delete cluster nodes.
  • An attacker could read or replace node credentials.
  • Namespace configuration may be altered without the intended step-up check.
  • Nginx services across affected nodes may be reloaded or restarted.
  • Service availability, routing behavior, or administrative control could be disrupted.
  • Modified credentials or configuration may enable further unauthorized access.

General mitigation guidance

Mitigation generally focuses on enforcing authorization and authentication assurance at every sensitive operation, rather than relying only on the presence of a valid bearer token. High-impact cluster mutations and service-control actions should require a secure session and, where appropriate, fresh second-factor verification. Authorization should be evaluated server-side for each route and action, with narrowly scoped roles and least privilege. Token lifetime, persistence, revocation, and audience restrictions can reduce the value of exposed tokens, while credential values should be protected from unnecessary disclosure or replacement. Secure-by-default designs should deny administrative operations unless both the required role and authentication assurance level are explicitly satisfied.

Mitigation generally focuses on enforcing authorization and authentication assurance at every sensitive operation, rather than relying only on the presence of a valid bearer token. High-impact cluster mutations and service-control actions should require a secure session and, where appropriate, fresh second-factor verification. Authorization should be evaluated server-side for each route and action, with narrowly scoped roles and least privilege. Token lifetime, persistence, revocation, and audience restrictions can reduce the value of exposed tokens, while credential values should be protected from unnecessary disclosure or replacement. Secure-by-default designs should deny administrative operations unless both the required role and authentication assurance level are explicitly satisfied.

How teams detect issues like this

Detection can combine static analysis and review of route-level authorization policies to identify sensitive handlers protected only by generic authentication checks. Code review should compare mutation and service-control endpoints against their required secure-session or step-up controls, especially where similar routes use inconsistent middleware. Runtime monitoring can alert on unusual node CRUD, credential replacement, namespace changes, and reload or restart activity, including requests made with aged or unusual tokens. Policy enforcement in CI can require explicit authorization annotations or tests for every administrative API operation, and automated review tools may help identify missing authorization checks.

Detection can combine static analysis and review of route-level authorization policies to identify sensitive handlers protected only by generic authentication checks. Code review should compare mutation and service-control endpoints against their required secure-session or step-up controls, especially where similar routes use inconsistent middleware. Runtime monitoring can alert on unusual node CRUD, credential replacement, namespace changes, and reload or restart activity, including requests made with aged or unusual tokens. Policy enforcement in CI can require explicit authorization annotations or tests for every administrative API operation, and automated review tools may help identify missing authorization checks.

Sources

SourceLink
github.comgithub.com/0xJacky/nginx-ui/commit/a3999bd78a3b97ab22e6b5e9fd478ac57598a954
github.comgithub.com/0xJacky/nginx-ui/releases/tag/v2.5.0
github.comgithub.com/0xJacky/nginx-ui/security/advisories/GHSA-h246-wpgf-vmq5

Frequently asked

questions

It can be exploitable through the Nginx UI API when the attacker can send requests

with a stolen or persisted JWT that remains accepted by the deployment.

The attacker generally needs a usable token associated with an authenticated

OTP-enabled user. They do not necessarily need to complete a fresh OTP step if

the affected route accepts the existing token without secure-session enforcement.

Apply server-side, route-level authorization that requires both the appropriate

privilege and a secure session or fresh second-factor verification for sensitive

cluster and service-control operations.

Maintain a consistent authorization policy for administrative endpoints, test

authentication assurance requirements in integration tests, constrain token

lifetime and scope, and monitor high-impact management actions.

It can be exploitable through the Nginx UI API when the attacker can send requests

with a stolen or persisted JWT that remains accepted by the deployment.

The attacker generally needs a usable token associated with an authenticated

OTP-enabled user. They do not necessarily need to complete a fresh OTP step if

the affected route accepts the existing token without secure-session enforcement.

Apply server-side, route-level authorization that requires both the appropriate

privilege and a secure session or fresh second-factor verification for sensitive

cluster and service-control operations.

Maintain a consistent authorization policy for administrative endpoints, test

authentication assurance requirements in integration tests, constrain token

lifetime and scope, and monitor high-impact management actions.

Find out what's already
exploitable in your codebase.