
CVE-2026-33267 — Apache Traffic Server @ 헤더 internal-metadata 스푸핑 (CVSS 10.0). 검증됨: 10.1.2에서는 @ 헤더가 플러그인으로 유출되며, 10.1.4에서는 제거됩니다.
@ 헤더 → 내부 메타데이터 스푸핑CVSS 10.0 (치명적) · CWE-20 · GHSA-jrh6-9hgv-mqm7
Apache Traffic Server는 @ 접두사가 붙은 헤더(@Ats-Internal, @ICAP-Status, @TCPInfo, ...)를 내부 메타데이터로 예약한다. 이 헤더는 메모리 내 헤더 구조에 존재하지만 네트워크로 직렬화되지 않는다. 취약한 버전(9.2.0–9.2.14, 10.1.0–10.1.3)에서는 클라이언트 요청과 오리진 응답에서 오는 이러한 헤더가 플러그인 훅이 실행되기 전에 제거되지 않는다(TS_HTTP_READ_REQUEST_HDR_HOOK, TS_HTTP_READ_RESPONSE_HDR_HOOK, 리맵 플러그인). 원격 공격자는 ATS 내부 메타데이터를 스푸핑할 수 있으며, 플러그인(cache, ACL, header_rewrite, ...)이 공격자가 제어하는 내부 상태를 신뢰할 수 있다. 영향은 사용 중인 플러그인에 따라 달라진다.
a9aee837db — "CVE-2026-33267: 9.2.x: 플러그인 훅 전에 외부 @ 헤더 제거"4ab63dbd93 — 동일한 수정HttpTransact::strip_at_headers()는 READ_REQUEST_HDR / READ_RESPONSE_HDR 훅 이전에 실행된다. 카운터 proxy.process.http.client_request_at_headers_stripped / proxy.process.http.origin_response_at_headers_stripped가 추가되었다.커스텀 at_probe 플러그인이 두 훅에서 @ 헤더를 로깅하고, 원시 소켓 클라이언트를 사용한다(curl은 @ 헤더를 조용히 제거한다):
| 빌드 | 클라이언트 제공 @Ats-Internal | 오리진 제공 @Origin-Test |
|---|---|---|
| ATS 10.1.2 (취약) | 🟥 유출됨 (플러그인이 이를 관찰함) | 🟥 유출됨 (8회 관찰) |
| ATS 10.1.4 (수정됨, 소스에서 빌드) | ✅ 제거됨 ("내부 @ 헤더가 제거됨") | ✅ 제거됨 |
수정된 빌드에서의 음성 대조군: 0개의 플러그인 관찰 (플러그인이 헤더를 전혀 볼 수 없음).
python3 at_headers_spoof.py 127.0.0.1 8080 /
원시 소켓을 통해 GET /와 함께 @Ats-Internal: pwned 및 @Another-At: test를 보내고 응답 헤더를 출력한다. 취약한 ATS에서는 커스텀 플러그인(또는 @ 메타데이터를 신뢰하는 모든 플러그인)이 스푸핑된 헤더를 받지만, 수정된 빌드에서는 훅 이전에 제거된다.
@ 메타데이터를 신뢰하는지에 따라 달라진다
(예: @ 필드를 참조하는 header_rewrite/cache 지시문).a9aee837db · 10.1.x 수정: 4ab63dbd93