🔍 CVE-2026-19670

5.4
CVSS Score
MEDIUM
2026-08-18
2026-09-08 15:28
✅ 완료

🇰🇷 한글 설명

Malcolm의 nginx Lua 기반 역할 기반 액세스 제어(RBAC) 계층이 요청 URI를 퍼센트 인코딩된 상태 그대로 패턴 매칭하여 발생하는 취약점입니다. Nginx는 디코딩된 URI를 사용하여 경로를 결정하지만, RBAC 검사는 인코딩된 원본 문자열을 검사하므로 권한이 낮은 사용자가 인코딩된 경로를 통해 관리자 경로에 접근할 수 있습니다.

💡 쉬운 설명

보안 검사기가 주소를 확인할 때 암호화된 형태 그대로 확인하는 허점을 이용한 공격입니다. 공격자가 주소를 살짝 꼬아서 보내면 보안 검사기는 통과시키고 실제 서버는 관리자 페이지로 연결해버립니다.

🇺🇸 원문 (English)

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.

📍 영향받는 시스템

Malcolm (nginx Lua RBAC layer 적용 시스템)

⚔️ 공격 벡터

퍼센트 인코딩(Percent-encoding)을 사용하여 RBAC 패턴 매칭을 우회하는 관리자 경로 요청

🛡️ 대응 방법

RBAC 검사 시 URI를 퍼센트 디코딩 및 정규화(Normalization)한 후 패턴 매칭을 수행하도록 Lua 스크립트 수정

🔧 검증 코드

응답 코드가 200 OK이면서 관리자 페이지 내용이 포함되어 있다면 취약한 상태입니다.

Shell / Script
curl -I -v --path-as-is http://<target-ip>/%68tadmin

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Nginx