🔍 CVE-2026-88879

8.2
CVSS Score
HIGH
2026-09-10
2026-10-08 16:17
✅ 완료

🇰🇷 한글 설명

Traefik의 헤더 정규화 방식 차이로 인해 발생하는 HTTP 헤더 스머글링 취약점입니다. 공격자가 점(.)을 포함한 변형된 헤더를 보내면, Traefik은 이를 별개의 헤더로 인식하여 통과시키지만 백엔드 서버는 이를 기존 인증 헤더와 동일하게 처리하여 인증을 우회할 수 있습니다.

💡 쉬운 설명

보안 검사를 통과하는 이름과 실제 서버가 읽는 이름이 미세하게 달라 발생하는 보안 구멍입니다. 공격자가 이름을 살짝 바꾼 가짜 정보를 보내면, 서버가 진짜 정보 대신 가짜 정보를 믿게 되어 권한을 탈취할 수 있습니다.

🇺🇸 원문 (English)

Traefik is an HTTP reverse proxy and load balancer. In Traefik v1.x, v2.x through v2.11.55, and v3.0.0 through v3.7.11, header names are canonicalized only on dashes, so X-Auth-User, X_Auth_User and X.Auth.User are treated as three distinct headers by Traefik, while backends that derive variable names from header names (CGI, WSGI, PHP, NGINX and others) collapse them into a single variable. A client can therefore smuggle a dot-form alias of a header that Traefik manages past the middleware managing it — for example supplying X.Authenticated.User alongside the canonical X-Authenticated-User written by the ForwardAuth middleware — causing such a backend to read the client-supplied value instead of the identity Traefik asserted. In the tested configuration (PHP 8.2 built-in SAPI over an HTTP/1 backend path), Go's lexical header ordering makes the attacker-supplied value win deterministically, so a client that ForwardAuth admits as a low-privilege identity can be treated by the backend as a different user or role. Any header Traefik sets is affected, not only ForwardAuth's. This is an incomplete fix for GHSA-x677-9fxg-v5c5, which blocked only the underscore form. Fixed in v2.11.56 and v3.7.12, which add the aliasHeadersStrategy entry-point option; because it defaults to 'keep' for backwards compatibility, it must be explicitly set to 'delete' or 'reject' for the fix to take effect. Unmaintained release lines will not receive a patch.

📍 영향받는 시스템

Traefik v1.x, v2.x (v2.11.55까지), v3.x (v3.7.11까지)

⚔️ 공격 벡터

점(.)을 포함한 변형된 헤더(예: X.Auth.User)를 사용하여 인증 헤더를 우회하고 백엔드에 조작된 값을 전달

🛡️ 대응 방법

v2.11.56 또는 v3.7.12 이상으로 업데이트하고, aliasHeadersStrategy 설정을 'delete' 또는 'reject'로 명시적 설정

🔧 검증 코드

출력된 버전이 v2.11.56 미만 또는 v3.7.12 미만인 경우 취약할 수 있습니다.

Shell / Script
traefik version 2>/dev/null | grep -E 'v[0-9]+\.[0-9]+\.[0-9]+'

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Nginx