
CVE-2026-86350에 대한 공개 패키지 및 PoC로, Apache Tomcat 9.0.121에서 발생하는 인증되지 않은 HTTP/2 요청 헤더 혼동(CWE-444) 취약점이며, 실습 재현 및 패치 지침을 포함합니다.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · CVE-2026-86350
Apache Tomcat 9.0.121 — Apache Software Foundation
Apache Tomcat의 HTTP/2 요청 해석 불일치('HTTP Request/Response smuggling') 취약점으로, CVE-2026-41293 수정의 회귀(regression)로 인해 발생하며 요청 헤더 뒤섞임(request header mix-up)을 유발할 수 있습니다.
| CVE | CVE-2026-86350 · CVE.org |
| CWE | CWE-444 |
| CVSS | Critical: 9.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N |
| Product | Apache Tomcat |
| Affected | 9.0.121까지 모든 버전(포함) |
| Patched | 9.0.122 및 이후 |
| Auth | 인증 불필요 (소스 맵 참조) |
| License | GNU Affero GPL v3.0 |
| Lab | 127.0.0.1 전용 · 벤더/클라이언트 공개 패키지이며 스캐너가 아님 |
java/org/apache/coyote/http2/HpackDecoder.java 및 HPackHuffman.java. 패치 9.0.122 커밋 5adadc4e / 11.0.26 192bc749는 초기 검증(early validation)을 되돌립니다.
GET/header.jspHTTP/2 prior-knowledge preface to :8080 UpgradeProtocol Http2ProtocolHEADERS stream 1: invalid field value trailing space then x-lab-witnessHpackDecoder.readHpackString throws IllegalArgumentException mid-blockdynamic table missing the marker; stream 2 indexes the markerdecoder mix-up or COMPRESSION_ERROR / GOAWAY스트림 1에서 유효하지 않은 HTTP/2 필드 이후, 스트림 2가 정상적인 200이 아님 (GOAWAY, RST, 또는 마커 뒤섞임).
먼저 할 일: Apache Tomcat을 9.0.122 이상으로 업데이트하십시오.
업그레이드 후 검증
CVE-2026-86350-Abraxas-Labs.py를 다시 실행하십시오: 매핑된 증거가 나타나지 않아야 합니다.즉시 업데이트할 수 없는 경우
오직 http://127.0.0.1:8088 (또는 바인딩한 루프백)만 대상으로 하십시오. 이 스크립트를 인터넷을 향해 지정하지 마십시오.
python3 CVE-2026-86350-Abraxas-Labs.py
성공은 응답 본문에 위의 **증거(witness)**가 나타나는 것입니다. 일반적인 200 HTML은 아닙니다.
재현에 사용된 루프백 스택. 이 폴더의 Dockerfile이 소스에서 빌드하지 않는 한 공식 이미지를 사용합니다.
cd lab
docker compose up --force-recreate
YAML이 로컬 디렉터리를 마운트하는 경우(버전 표의 플러그인 zip / 소스 태그) 취약한 제품 트리를 Compose 옆에 바인딩하십시오. 127.0.0.1 외에는 아무것도 게시하지 마십시오.
# CVE-2026-86350
CWE: CWE-444
CVSS: Critical 9.1 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N (CISA-ADP). Apache: Important.
## Description
A regression in the CVE-2026-41293 HTTP/2 header-validation refactor can mix request headers. Invalid HPACK fields abort decode so later fields never enter the dynamic table; the next stream on the connection then interprets indexes against a desynced table.
## Product
Apache Tomcat 9.0.121 (fixed in 9.0.122; also 10.1.60 and 11.0.26). Lab oracle is HPACK desync, not RCE.
이 공개 패키지는 GNU Affero General Public License v3.0에 따라 라이선스됩니다. LICENSE를 참조하십시오.
이 패키지는 벤더, 사이트 소유자, 그리고 라이선스된 랩을 위한 것입니다. 스크립트는 127.0.0.1과 통신합니다. 소유하지 않은 시스템에 대해 사용하는 것은 Abraxas Labs에 의해 승인되지 않습니다. 보증은 없습니다.