CVE-2026-92877: Eclipse JAXB RI의 XXE 취약점 원인과 영향

최근 보고된 CVE-2026-92877은 Eclipse JAXB RI의 취약점입니다. JAXB 팩토리 메서드가 외부 엔터티 해석을 막는 수단으로 FEATURE_SECURE_PROCESSING 단일 설정에만 의존해 왔는데, 일부 JAXP 구현 환경에서는 이 보안 처리가 우회되면서 신뢰할 수 없는 XML의 외부 엔터티까지 처리되는 위험이 열립니다.

CVE-2026-92877 취약점 개요 및 위험도

CVE-2026-92877은 Eclipse JAXB RI(jaxb-ri core) 라이브러리에서 발생하는 XML 외부 엔터티(XXE, XML External Entity) 처리 취약점으로, 외부 엔터티 해석이 그대로 보안 위협으로 이어지는 유형입니다.

상세 분류와 위험도는 표로 정리했습니다.

구분 상세 내용
CVE ID CVE-2026-92877
CVSS 점수 8.3 (HIGH)
CWE 분류 CWE-611
대상 라이브러리 Eclipse JAXB RI (jaxb-ri core)

취약점 발생 메커니즘: FEATURESECUREPROCESSING의 한계

문제의 핵심은 간단합니다. JAXB 팩토리 메서드가 과거부터 외부 엔터티 해석을 방지하는 수단으로 FEATURE_SECURE_PROCESSING이라는 단일 기능 하나에만 기대어 왔다는 점입니다.

일반적으로 FEATURE_SECURE_PROCESSING은 XML 처리 시 보안 제한을 설정하는 표준 기능이지만, 모든 JAXP(Java API for XML Processing) 구현 환경에서 동일하게 작동하지는 않습니다. 일부 JAXP 구현 환경에서는 이 기능 하나로 외부 엔터티 해석을 완벽하게 차단하지 못하고, 보안 처리가 우회되는 틈이 생깁니다.

취약점은 다음 세 조건이 모두 맞아떨어질 때 발생합니다.

  1. 팩토리 메서드 사용: Eclipse JAXB RI의 JAXB 팩토리 메서드로 XML을 처리하는 Java 애플리케이션이어야 합니다.
  2. 특정 JAXP 환경: FEATURE_SECURE_PROCESSING 설정만으로는 외부 엔터티 해석을 막지 못하는 JAXP 구현 환경에서 실행되어야 합니다.
  3. 신뢰할 수 없는 입력 처리: 외부 입력 등 신뢰할 수 없는 출처의 XML을 JAXB 언마샬링(Unmarshalling)으로 처리하는 코드 경로가 존재해야 합니다.

기술적 해결 방안: PR #2013 및 명시적 하드닝 설정

Eclipse JAXB RI의 유지 관리자 측은 ‘Complete hardening’이라는 명칭의 PR #2013을 병합해 해당 문제를 완화했습니다.

단일 설정에 의존하던 기존 방식에서 벗어나 여러 JAXP 보안 기능을 명시적으로 지정해 보안 강도를 높이는 하드닝(Hardening) 전략을 취한 것입니다. PR #2013에서 적용된 주요 설정은 두 가지입니다.

  1. DOCTYPE 선언 거부 (DISALLOW_DOCTYPE_DECL true): XML 문서에서 DTD(Document Type Definition)의 DOCTYPE 선언 자체를 거부해 외부 엔터티 정의 가능성을 원천 차단합니다.
  2. 외부 일반 엔터티 비활성화 (EXTERNAL_GE false): 외부 일반 엔터티의 해석을 비활성화해 외부 리소스 참조를 방지합니다.

이런 설정은 JAXP 구현체 간 동작 차이로 생기는 보안 공백을 메우고, 외부 엔터티를 노린 공격 시도를 막아 주는 장치가 됩니다.

영향 범위 및 점검 우선순위

현재 확인된 최신 릴리스 버전은 4.0.9입니다. Java 기반 애플리케이션을 운영하는 개발자와 보안 담당자가 점검할 우선순위는 다음과 같습니다.

  1. 라이브러리 의존성 확인: 프로젝트에서 jaxb-ri core를 사용하는지, 사용한다면 버전이 무엇인지 먼저 파악합니다.
  2. 데이터 입력 경로 분석: 외부 사용자로부터 XML 데이터를 입력받아 JAXB 언마샬링을 수행하는 지점이 있는지 전수 조사합니다.
  3. JAXP 구현체 식별: 애플리케이션이 구동되는 런타임 환경의 JAXP 구현체가 무엇인지 확인해 FEATURE_SECURE_PROCESSING 설정의 실효성을 따져 봅니다.

대응 방안 및 완화 조치

CVE-2026-92877에 대응하는 방법은 크게 두 가지입니다.

  1. 최신 버전 업데이트 검토: 최신 릴리스(4.0.9)가 이미 확인된 만큼, 해당 버전에 패치가 포함됐는지 확인한 뒤 업데이트를 검토하면 됩니다.
  2. 명시적 보안 설정 적용: 업데이트가 바로 어려운 경우에는 JAXB 팩토리 설정에서 DISALLOW_DOCTYPE_DECL을 true로, EXTERNAL_GE를 false로 직접 지정해 외부 엔터티 해석을 차단하는 조치입니다.

댓글 남기기