/

CVE-2026-107333

Severity:

HIGH RISK

(8.1)

Authorization Bypass (CWE-863) in Malcolm Nginx Proxy

CVE-2026-107333

Awaiting Analysis

Vulnerability type

Category:

Authorization Bypass

CWE:

CWE-863

Impact:

Unauthorized Access and Privilege Escalation

Severity:

HIGH RISK

(8.1)

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

Malcolm's nginx-based reverse proxy has inconsistent URL path normalization between its Lua RBAC authorization layer and nginx request routing. An authenticated user may craft a specially formatted path to bypass role-based restrictions and access administrative or otherwise restricted interfaces.

Malcolm's nginx-based reverse proxy has inconsistent URL path normalization between its Lua RBAC authorization layer and nginx request routing. An authenticated user may craft a specially formatted path to bypass role-based restrictions and access administrative or otherwise restricted interfaces.

Affected context

The issue occurs in Malcolm deployments where the nginx reverse proxy uses Lua-based RBAC checks to protect sensitive routes. Risk is present when the authorization layer interprets a request path differently from nginx's routing logic, potentially affecting restricted file upload, PHP server, htadmin, and authentication management endpoints.

The issue occurs in Malcolm deployments where the nginx reverse proxy uses Lua-based RBAC checks to protect sensitive routes. Risk is present when the authorization layer interprets a request path differently from nginx's routing logic, potentially affecting restricted file upload, PHP server, htadmin, and authentication management endpoints.

Exploit preconditions

  • Attack surface: HTTP or HTTPS requests handled by the nginx reverse proxy
  • Required access: An authenticated Malcolm account with access to the proxy
  • Trigger point: A request directed at an RBAC-protected path using specially formatted path characters or structure
  • Why exploitation is possible: The Lua authorization layer and nginx routing logic normalize or resolve the path inconsistently, allowing authorization to be evaluated against a different resource than the one ultimately served
  • Attack surface: HTTP or HTTPS requests handled by the nginx reverse proxy
  • Required access: An authenticated Malcolm account with access to the proxy
  • Trigger point: A request directed at an RBAC-protected path using specially formatted path characters or structure
  • Why exploitation is possible: The Lua authorization layer and nginx routing logic normalize or resolve the path inconsistently, allowing authorization to be evaluated against a different resource than the one ultimately served

Why this happens

The underlying bug is an authorization inconsistency caused by applying different URL path normalization rules in separate request-processing components. When the RBAC layer validates one representation of a path while nginx routes another, a request may pass an authorization check intended for a less-sensitive resource and then reach a restricted endpoint. This behavior maps to CWE-863: Incorrect Authorization, because access control enforcement does not reliably correspond to the resource being accessed.

The underlying bug is an authorization inconsistency caused by applying different URL path normalization rules in separate request-processing components. When the RBAC layer validates one representation of a path while nginx routes another, a request may pass an authorization check intended for a less-sensitive resource and then reach a restricted endpoint. This behavior maps to CWE-863: Incorrect Authorization, because access control enforcement does not reliably correspond to the resource being accessed.

Potential impact

  • An authenticated user may access administrative or role-gated interfaces
  • Unauthorized file uploads may be possible
  • Restricted PHP server functionality may be exposed
  • htadmin or authentication management settings could be accessed
  • Account, authorization, or application configuration may be modified
  • The issue could enable further compromise depending on exposed endpoint capabilities
  • An authenticated user may access administrative or role-gated interfaces
  • Unauthorized file uploads may be possible
  • Restricted PHP server functionality may be exposed
  • htadmin or authentication management settings could be accessed
  • Account, authorization, or application configuration may be modified
  • The issue could enable further compromise depending on exposed endpoint capabilities

General mitigation guidance

Mitigation generally focuses on making authorization and routing use the same canonical request representation.

Common defensive patterns include:

  • Normalize and canonicalize URL paths once before both authorization and routing decisions
  • Apply authorization checks to the final resolved resource rather than an alternate path representation
  • Reject ambiguous, malformed, or non-canonical paths by default
  • Define explicit allowlists for protected endpoints and methods
  • Keep administrative interfaces isolated behind stronger network and identity controls
  • Run exposed services with least privilege and limit the permissions of administrative backends
  • Add regression tests covering encoded, duplicated, and alternate path-separator forms

Mitigation generally focuses on making authorization and routing use the same canonical request representation.

Common defensive patterns include:

  • Normalize and canonicalize URL paths once before both authorization and routing decisions
  • Apply authorization checks to the final resolved resource rather than an alternate path representation
  • Reject ambiguous, malformed, or non-canonical paths by default
  • Define explicit allowlists for protected endpoints and methods
  • Keep administrative interfaces isolated behind stronger network and identity controls
  • Run exposed services with least privilege and limit the permissions of administrative backends
  • Add regression tests covering encoded, duplicated, and alternate path-separator forms

How teams detect issues like this

Organizations can look for authorization and routing inconsistencies through:

  • Static analysis and code review of path normalization, decoding, and RBAC middleware
  • Tests that compare the path examined by authorization logic with the path ultimately routed by nginx
  • Negative tests for encoded delimiters, repeated separators, dot segments, and other ambiguous path forms
  • Web access-log analysis for unusual paths followed by successful responses from restricted endpoints
  • Policy checks requiring canonicalization before authorization and consistent handling across proxy layers
  • Automated security testing or code review tools that identify authorization decisions made on non-canonical input

Organizations can look for authorization and routing inconsistencies through:

  • Static analysis and code review of path normalization, decoding, and RBAC middleware
  • Tests that compare the path examined by authorization logic with the path ultimately routed by nginx
  • Negative tests for encoded delimiters, repeated separators, dot segments, and other ambiguous path forms
  • Web access-log analysis for unusual paths followed by successful responses from restricted endpoints
  • Policy checks requiring canonicalization before authorization and consistent handling across proxy layers
  • Automated security testing or code review tools that identify authorization decisions made on non-canonical input

Sources

SourceLink
github.comgithub.com/cisagov/CSAF/blob/develop/csaf_files/OT/white/2026/icsa-26-280-01.json
github.comgithub.com/cisagov/Malcolm/security/advisories/GHSA-v66f-cwcm-hf73

Frequently asked

questions

Yes, an authenticated user may be able to exploit it through crafted HTTP requests sent to the Malcolm reverse proxy, subject to network exposure and deployment controls.

The attacker generally needs a valid authenticated account and the ability to send requests to the affected proxy. The account may not otherwise have permission to use the targeted administrative endpoint.

Ensure that URL paths are canonicalized consistently before authorization and routing, reject ambiguous paths, and verify access against the final resolved resource.

Use shared path-processing rules across proxy and authorization layers, apply default-deny endpoint policies, and include path-normalization cases in automated regression and security tests.

Yes, an authenticated user may be able to exploit it through crafted HTTP requests sent to the Malcolm reverse proxy, subject to network exposure and deployment controls.

The attacker generally needs a valid authenticated account and the ability to send requests to the affected proxy. The account may not otherwise have permission to use the targeted administrative endpoint.

Ensure that URL paths are canonicalized consistently before authorization and routing, reject ambiguous paths, and verify access against the final resolved resource.

Use shared path-processing rules across proxy and authorization layers, apply default-deny endpoint policies, and include path-normalization cases in automated regression and security tests.

Find out what's already
exploitable in your codebase.