Skip to content
NewA calmer, faster ZeroHour
Vulnerability2 · 1 read

CVE-2026-107334

URI encoding bypass of Malcolm nginx Lua RBAC

CVSS 3.1
5.4 medium
EPSS
—
Published
·
Modified
Analyze CVE-2026-107334 with Vani AIImpact, affected versions, exploitation status, mitigations and detection

Malcolm's nginx Lua role-based access control checks the raw, percent-encoded request URI, while nginx selects the location that actually serves the request using the percent-decoded, normalized URI. An authenticated low-privilege user can request a role-restricted path (such as /htadmin, /auth, /admin_login, /arkime/api/esadmin, NetBox, or upload endpoints) with percent-encoding so the Lua gate sees no matching restriction and allows the request, while nginx still routes it to the admin location. That yields unauthorized read and modify access to those admin functions (confidentiality and integrity only; availability is not affected). Organizations running Malcolm with this RBAC layer and any authenticated low-privilege accounts are affected; specific version ranges were not stated in the advisory data. It is not listed in CISA KEV and no public proof-of-concept is known.

What to do: Upgrade Malcolm to a release that percent-decodes and normalizes the URI before the Lua RBAC check, matching nginx's routing. Until then, restrict admin paths (/htadmin, /auth, /admin_login, /arkime/api/esadmin, NetBox, and upload endpoints) to trusted networks and review access logs for percent-encoded requests to those paths from low-privilege accounts.

ProductAffected
CISA / Idaho National Laboratory (cisagov) Malcolm—
Estimated exposure
nicheNo basis for an estimate.

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description · NVD

Malcolm's nginx Lua role-based access control (RBAC) layer decides whether an authenticated user may reach a role-restricted path (e.g. /htadmin, /auth, /admin_login, /arkime/api/esadmin, NetBox, upload endpoints) by pattern-matching the raw, percent-encoded request URI. Nginx itself, however, selects which location block actually serves the request using the percent-decoded, normalized URI. Because the RBAC check never percent-decodes its input, an authenticated low-privilege user can request an admin-only path using percent-encoding (e.g. /%68tadmin.php) and have nginx route it to the restricted location while the Lua RBAC gate evaluating the un-decoded raw string finds no matching restriction and grants access.

Weakness
CWE-863
Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N

In the news

1 story