Apache OpenNLP DictionaryEntryPersistor에서 정제되지 않은 사전 구문 분석을 통한 XML 외부 엔터티(XXE) 영향을 받는 버전: 2.5.9 이전, 3.0.0-M3 이전 설명: DictionaryEntryPersistor 클래스는 FEATURE_SECURE_PROCESSING을 활성화하거나 DTD 처리를 비활성화하지 않고 클래스 로드 시 정적 SAXParserFactory를 초기화합니다. create(InputStream, EntryInserter)가 호출되면 XMLReader에 설정된 유일한 기능은 네임스페이스 지원(외부 엔터티 확인 및 DOCTYPE 선언)입니다.
Apache OpenNLP DictionaryEntryPersistor에서 정제되지 않은 사전 구문 분석을 통한 XML 외부 엔터티(XXE)
영향을 받는 버전: 2.5.9 이전, 3.0.0-M3 이전
설명: DictionaryEntryPersistor 클래스는 FEATURE_SECURE_PROCESSING을 활성화하거나 DTD 처리를 비활성화하지 않고 클래스 로드 시 정적 SAXParserFactory를 초기화합니다. create(InputStream, EntryInserter)가 호출되면 XMLReader에 설정된 유일한 기능은 네임스페이스 지원입니다. 즉, 외부 엔터티 확인 및 DOCTYPE 선언은 완전히 활성화된 상태로 유지됩니다. 악의적인 DOCTYPE 선언이 포함된 조작된 사전 파일(예: 불용어 목록 또는 도메인 사전)을 제공할 수 있는 공격자는 애플리케이션이 단일 사전 항목을 처리하기 전에 SAX 구문 분석 중에 file:// 엔터티 참조를 통한 로컬 파일 공개 또는 http:// 엔터티 참조를 통한 서버측 요청 위조를 트리거할 수 있습니다. 이는 FEATURE_SECURE_PROCESSING 및 disallow-doctype-decl을 올바르게 설정하고 코드베이스의 다른 모든 XML 구문 분석 경로에서 사용되는 프로젝트 자체의 XmlUtil.createSaxParser() 도우미와 일치하지 않습니다. 공용 Dictionary(InputStream) 생성자는 이 메소드에 직접 위임하며 사용자 제공 사전을 로드하기 위한 문서화된 API로서 신뢰할 수 없는 입력을 현실적인 시나리오로 만듭니다.
완화 방법: 2.x 사용자는 2.5.9로 업그레이드해야 합니다. 3.x 사용자는 3.0.0-M3으로 업그레이드해야 합니다. 즉시 업그레이드할 수 없는 사용자는 모든 사전 파일이 신뢰할 수 있는 출처에서 제공되었는지 확인해야 하며 DOCTYPE 선언이 포함된 XML이 파서에 도달하기 전에 거부하는 입력 유효성 검사로 Dictionary(InputStream) 생성자를 래핑하는 것을 고려해야 합니다.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 91.00 |
| 악용 신호(추가 악용신호 없음) | ×1.00 |
| VPI | 91.00 |
VPI 공식 vpi-v1 기준
| 소스 | CVSS 버전 | 기본 점수 | 심각도 | 벡터 문자열 | 평가일 |
|---|---|---|---|---|---|
| OSV3rd | 3.1 | 9.1 | CRITICAL | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N | 2026. 05. 13. |
| NVDNIST | 3.1 | 9.1 | CRITICAL |
| CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N |
| 2026. 05. 05. |