CVE-2026-63317 in OpenNLP정보

요약

\~에 의해 VulDB • 2026. 07. 24.

Apache OpenNLP의 XML 기능 생성자 설명자와 형식 이름을 통한 임의 클래스 인스턴스화

영향 받는 버전:

- 2.5.10 미만 - 3.0.0-M5 미만

설명:

Apache OpenNLP에는 Class.forName()을 통해 완전히 정규화된 이름으로 클래스를 로드하고 해당 클래스에 대한 무인수자 생성자를 호출하는 세 가지 코드 경로가 존재하며, 이 과정에서 클래스 이름이나 유형에 대해 사전 검증이 수행되지 않습니다.

영향을 받는 경로는 다음과 같습니다:

(1) GeneratorFactory는 XML 기능 생성자 설명자의 generator 요소에서 class 속성을 읽습니다. 이러한 설명자는 모델 아카이브(예: TokenNameFinder 및 POSTagger 모델) 내에 아티팩트로 포함되어 있으며, 모델 로딩 중에 구문 분석됩니다. 따라서 조작된 모델 아카이브를 제공할 수 있는 공격자가 클래스 이름을 직접 제어할 수 있습니다.

(2) StreamFactoryRegistry.getFactory(Class, String)는 등록되지 않은 형식 이름을 ObjectStreamFactory의 완전히 정규화된 클래스 이름으로 해석하는 대체 경로를 사용합니다. 이는 신뢰할 수 없는 형식 이름을 전달하는 애플리케이션에서 악용될 수 있습니다(예: 명령줄 도구의 -format 매개변수를 외부 입력에 노출).

(3) StringInterners는 opennlp.interner.class 시스템 속성으로 이름이 지정된 interner 구현을 인스턴스화합니다. 이 값은 일반적으로 배포자가 제어하므로, 독립적으로 공격자에게 도달 가능한 것이 아니라 심층 방어 차원에서 강화됩니다.

악용하려면 정적 초기화 블록이나 무인수자 생성자에 공격자가 유용하게 사용할 수 있는 부작용(예: JNDI 조회, 외부 네트워크 I/O, 파일 시스템 접근)을 가진 클래스가 classpath에 존재해야 하므로, 이는 즉시 원격 코드 실행(RCE)으로 이어지지 않습니다.

완화 조치:

고정된 릴리스로 업그레이드하십시오.

해결책은 세 가지 경로 모두 ExtensionLoader.instantiateExtension(...)를 통해 처리되도록 합니다. 이 메서드는 Class.forName() 호출 전에 패키지 접두사 허용 목록을 참조하므로, 금지된 클래스는 로드되거나 초기화되거나 생성되지 않습니다. opennlp. 접두사가 붙은 패키지는 기본적으로 허용됩니다. feature generator factories, object stream factories 또는 string interners를 참조하는 모델을 로딩할 때 opennlp.* 외부의 팩토리를 사용해야 하는 배포 환경에서는 ExtensionLoader.registerAllowedPackage(String)를 프로그래밍 방식으로 호출하여 첫 번째 모델 로딩 전에 해당 패키지를 명시적으로 등록하거나, OPENNLP_EXT_ALLOWED_PACKAGES 시스템 속성을 허용된 패키지 접두사의 쉼표로 구분된 목록으로 설정하여 이러한 패키지를 허용해야 합니다.

즉시 업그레이드가 불가능한 사용자는 모든 모델 파일과 형식 이름이 신뢰할 수 있는 출처에서 제공되도록 보장하고, classpath 내에서 부작용을 일으키는 정적 초기화 블록이나 생성자를 가진 클래스에 대해 감사해야 합니다.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

책임이 있는

Apache

예약하다

2026. 07. 16.

모더레이션

수락

항목

VDB-382880

EPSS

0.00000

활동

낮음

출처

Do you need the next level of professionalism?

Upgrade your account now!