CVE-2026-67211 in OpenNLP정보

요약

\~에 의해 VulDB • 2026. 09. 11.

Apache OpenNLP의 SymSpellModelSerializer에서 제한되지 않은 맵 사전 크기 지정으로 인한 OOM(Out-of-Memory) 서비스 거부 취약점

영향 받는 버전:

- 3.0.0-M4 - 3.0.0-M5

(opennlp-spellcheck 확장 기능은 3.0.0-M4에서 도입되었습니다. 릴리스 1.x 및 2.x에는 영향받는 코드가 포함되어 있지 않습니다.)

설명:

SymSpellModelSerializer.create() 메서드는 바이너리 SymSpell 모델 스트림에서 두 개의 32비트 부호 있는 정수 카운트 필드(unigramCount 및 bigramCount)를 읽으며, 음수가 아닌지 여부만 검증한 후 각 값을 LinkedHashMap.newLinkedHashMap()에 직접 전달합니다. 상한 제한이 적용되지 않으므로, 모델 파일이 신뢰할 수 없는 출처에서 제공되는 경우 해당 카운트는 공격자가 완전히 제어할 수 있습니다.

어떤 카운트 필드도 Integer.MAX_VALUE(또는 사용 가능한 힙을 고갈시킬 만큼 충분히 큰 값)로 설정된 조작된 .bin 모델 파일을 사용하면 맵의 용량이 2^30 항목으로 사전 크기 지정됩니다. 과다한 백킹 배열은 해당 맵에 첫 번째 put() 호출 시 할당되며, 압축 oops가 적용되는지에 따라 4~8GB를 요청합니다. 이로 인해 OutOfMemoryError로 로드 실패가 발생합니다. 카운트 필드는 고정 크기의 헤더(마직 넘버, 포맷 버전, 세 개의 UTF 문자열, 구성 필드 및 편집 거리 식별자) 바로 뒤에 위치하므로, 공격자는 페이로드를 무기로 활용하는 데 의미 있는 크기 비용을 지불하지 않습니다: 100바이트 미만 파일에 단일 실제 항목 하나만 추가하면 이를 로드하는 JVM을 충돌시킬 수 있습니다.

SymSpell 모델을 역직렬화하는 모든 코드 경로가 영향을 받습니다. 여기에는 SymSpellModels.deserialize(InputStream), SymSpellModels.fromBytes(byte[]), SymSpellModelResolver.resolveByLanguage(String)를 통한 클래스패스 모델 로딩, CorrectTextTool 명령줄 도구 및 등록된 ArtifactSerializer를 통한 모델 아카이브 로딩이 포함됩니다. opennlp-spellcheck 확장 기능은 공식 OpenNLP 바이너리 배포판에 포함되어 있습니다.

실제 영향은 신뢰할 수 없거나 반신뢰되는 출처에서 SymSpell 모델 파일을 로드하는 프로세스에 대한 서비스 거부(Denial of Service)입니다.

완화 방안:

- 3.x 사용자는 3.0.0-M6로 업그레이드해야 합니다.

참고: 수정 사항은 맵이 사전 크기 지정되기 전에 두 카운트 필드에 상한 제한을 적용합니다. 음수이거나 해당 한계를 초과하는 카운트는 IOException을 발생시키고, 큰 할당 없이 빠르게 읽기 실패를 처리합니다. 이 한계는 이전에 도입된 기존 AbstractModelReader.MAX_ENTRIES 제한이며, 현재 변경 사항에서는 이를 공개 가시성으로 승격하여 자체 바이너리 포맷을 구현하는 직렬화 클래스들이 이를 공유할 수 있도록 합니다. 기본 상한은 10,000,000으로, 이는 정당한 SymSpell 사전의 항목 수보다 훨씬 높지만 힙 고갈을 위협할 만한 어떤 값보다도 낮습니다. legitimately(정당하게) 더 큰 사전을 로드해야 하는 배포 환경에서는 JVM 시작 시 OPENNLP_MAX_ENTRIES 시스템 속성을 원하는 양의 정수(예: -DOPENNLP_MAX_ENTRIES=50000000)로 설정하여 한계를 높일 수 있습니다. 유효하지 않거나 음수인 값은 기본값으로 폴백됩니다. 이 속성은 모델 리더 제한과 공유되므로, 이를 높이면 두 가지 모두의 제한이 완화됨에 유의하십시오.

즉시 업그레이드할 수 없는 사용자는 출처가 검증되지 않는 한 모든 SymSpell .bin 모델 파일을 신뢰할 수 없는 입력으로 취급해야 하며, 무결성 검사가 없이 최종 사용자로부터 제공되거나 제3자 저장소에서 가져온 모델을 로드하지 않아야 합니다.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

책임이 있는

Apache

예약하다

2026. 07. 28.

모더레이션

수락

항목

VDB-402488

EPSS

0.00000

활동

낮음

출처

Might our Artificial Intelligence support you?

Check our Alexa App!