Уровень управления доступом на основе ролей (RBAC) nginx Lua от Malcolm решает, может ли аутентифицированный пользователь достичь пути с ограниченным ролью (например, /htadmin, /auth, /admin_login, /arkime/api/esadmin, NetBox, конечные точки загрузки) путем сопоставления шаблона с необработанным URI запроса, закодированным в процентах. Однако сам Nginx выбирает, какой блок местоположения фактически обслуживает запрос, используя декодированный в процентах нормализованный URI. Поскольку проверка RBAC никогда не декодирует свои входные данные в процентах, аутентифицированный пользователь с низким уровнем привилегий может запросить путь только для администратора с использованием процентного кодирования (например, /%68tadmin.php) и заставить nginx направить его в ограниченное местоположение, в то время как шлюз Lua RBAC, оценивающий недекодированную необработанную строку, не обнаружит совпадающего ограничения и предоставит доступ.
Показать оригинальное описание (EN)
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.
Характеристики атаки
Последствия
Строка CVSS v4.0