
CVE-2026-2332 및 2026년 Jetty CVE 4건 추가: 귀하의 Jetty(또는 Spring Boot) 빌드가 어떤 취약점에 해당하며, Jetty가 명시한 수정 버전이 Maven Central에 실제로 존재하기는 합니까? 9.4/10/11 EOL 라인의 경우 답은 '가용성은 세부 정보 참조' = 404입니다.
당신의 Jetty(또는 Spring Boot에 딸려온 Jetty)가 2026년 이 다섯 개 CVE 중 어느 것에 해당하는가 — 그리고 공식이 올리라고 하는 그 버전이 Maven Central에 실제로 존재하기는 하는가?
주력은 CVE-2026-2332(GHSA-355h-qmc2-wpwf, high / CVSS v3 7.4): jetty-http의 chunked 요청 밀수.
가장 단단한 사실 하나: 9.4 / 10 / 11 이 세 EOL 구 라인의 공개 수정 버전은 아예 존재하지 않는다 — 공식 보안 페이지에는 이들에 대해 한 줄씩
see details for availability(= 상용 지원)라고 적혀 있고, 그 버전 번호들은 Maven Central에서 실측 결과 전부 404다.
java -jar jetty-line-check.jar /path/to/jetty # 압축 해제 배포된 Jetty(lib/*.jar 스캔)
java -jar jetty-line-check.jar app.war # war
java -jar jetty-line-check.jar app.jar # Spring Boot fat jar
java -jar jetty-line-check.jar --table # 다섯 개 CVE × 모듈 × 버전 라인 판정표만 보기
java -jar jetty-line-check.jar --utf8 ... # Windows 콘솔 한글 깨짐 시 추가
자매 프로젝트 tomcat-line-check의 판정 기준은 「jar 안에 특정 수정 클래스가 있는가」였다. 왜냐하면 Tomcat 그 수정은 새 클래스를 하나 추가했기 때문이다.
Jetty 이번 것들은 그렇게 안 된다. 주력인 CVE-2026-2332의 수정은 HttpParser의 메서드 본문을 바꾼 것이고, 새로 추가된 클래스는 없다
(작성 전에 gh api compare + javap로 확실히 확인했다). 그래서 판정 기준은 이것뿐이다:
당신의 완전한 좌표 + 버전 라인이 어느 CVE에 해당하는가; 그리고 공식이 지목한 수정 버전이 Maven Central에 실제로 존재하기는 하는가.
판정표는 tools/gen_table.py가 다섯 개 GitHub advisory의 vulnerabilities[] + Maven Central 실제 jar HEAD 탐지로부터 생성하며,
일곱 개의 단언(양성 대조 / 핵심 주장 / 구 라인 최종판 / 센티넬 / 주력 구조 / 분리 모듈 / 등급)을 통과하지 못하면 표를 내놓지 않는다.
구 라인(9.4 / 10.0 / 11.0)의 그 한 무더기 404와 无가 바로 이 도구의 가치다. --table을 실행해 전체를 보라.
org.eclipse.jetty의 reviewed advisory, 2026년)🔴 주력인 2332의 영향 범위만이 견고하다(밀수 경로가 ServerConnector / HttpParser라는 기본 파싱 주 경로에 놓여 있고,
어떤 특정 기능도 켤 필요가 없다). 나머지 네 개는 판정표의 한 줄로만 취급한다:
CVE-2026-10050(Digest)의 영향 범위는 매우 작다 —— Digest 인증을 명시적으로 활성화해야만 닿을 수 있으니 주력 셀링 포인트로 삼지 말라.CVE-2026-6790은 medium, CVE-2025-11143은 low —— 「고위험」으로 통칭해서는 안 된다.see details for availability, 거기까지다.GHSA-r7p8-xq5m-436c · GHSA-7p3p-8qv8-m2vh · GHSA-2fvj-hgj9-j2gr · GHSA-wjpw-4j6x-6rwhsee details for availability 출처): https://jetty.org/security.htmlpython tools/gen_table.py --dry # 단언만 실행, 파일 쓰지 않음
python tools/gen_table.py # 단언 전부 통과해야 CveTable.java 작성
python tools/recheck_before_publish.py # 발행 당일 재실행, 주장이 무효면 문구를 고치지 판정 기준을 고치지 말라
mvn package # JDK 17 필요; 런타임 의존성 제로(JUnit은 테스트 시에만)
| 코드 | 의미 |
|---|---|
0 | 스캔 완료, 그리고 모든 파일이 실제로 읽혔다 |
2 | 사용법 오류(경로 미제공) |
4 | 읽을 수 없는 파일이 있다 —— zip이 아니거나, 내용이 잘렸거나, 읽기 실패 |
🔴 4의 이유: 흔적은 사람이 보는 것이고, CI와 스크립트가 보는 것은 종료 코드다. 이것이 없으면 손상 / 암호화 / 다운로드 불완전한 jar가
조용히 「문제를 발견하지 못했다」는 한마디로 변한다 —— 「나는 그것을 읽을 수 없다」와 「당신은 안전하다」는 반드시 두 개의 문장이어야 한다.
⚠️ 합법적인 빈 jar(22바이트짜리 EOCD 레코드 하나)는 읽을 수 없는 것으로 치지 않으며, 4를 트리거하지 않는다.
MIT
| 삼태 | 의미 |
|---|
PUBLIC | advisory가 수정 버전을 지목했고, 그것이 실제로 Maven Central에 있다 —— 공개적으로 업그레이드 가능 |
404 | advisory가 수정 버전을 지목했지만, 그것이 Central에서 404다 —— 공식 보안 페이지에 see details for availability(상용 지원)라고 적혀 있음 |
无 | advisory가 이 라인의 수정 버전을 아예 주지 않았다(first_patched_version이 비어 있음) —— 이 라인을 고치려면 메이저 버전을 넘어 업그레이드해야 함 |
| CVE | 모듈 | 등급 | 한 줄 요약 |
|---|
| CVE-2026-2332 | jetty-http | high / v3 7.4 | ⭐ 주력: chunked quoted-string 안의 \r\n이 청크 헤더 종료로 처리됨 → 요청 밀수(CWE-444) |
| CVE-2026-5795 | jaspi(12.x는 ee8/9/10/11-jaspi로 분리) | high / v3 7.4 | JASPI의 ThreadLocal 미정리 → 권한 상승 |
| CVE-2026-6790 | jetty-server | medium / v3 5.3 | HTTP/2·3의 Host / :authority 혼동 |
| CVE-2026-10050 | jetty-security(12.x는 ee8/9-security 추가) | high / v4 8.7 | Digest 인증 ISO-8859-1 처리 |
| CVE-2025-11143 | jetty-http | low / v3 3.7 | URI 파싱 차이 |