ZeroHour
oss-securitypublished ()ingested
Part of a story covered by 2 sources: “Apache OpenNLP discloses two denial-of-service vulnerabilities (CVE-2026-67211, CVE-2026-82617), both fixed in 3.0.0-M6” — merged summary and timeline →

CVE-2026-67211: Apache OpenNLP: OOM DoS via Unbounded Array Allocation in SymSpellModelSerializer

AI summary · glm-5.3-flash

Apache OpenNLP CVE-2026-67211: unbounded map pre-sizing in SymSpellModelSerializer enables out-of-memory denial of service in opennlp-symspell 3.0.0-M4/M5.

CVE-2026-67211 affects the opennlp-symspell artifact in versions 3.0.0-M4 and 3.0.0-M5 only. The SymSpellModelSerializer.create() method performs unbounded map pre-sizing, allowing crafted input to trigger out-of-memory denial of service. Releases 1.x and 2.x are unaffected because the spellcheck extension was introduced in 3.0.0-M4; the issue is resolved in 3.0.0-M6.

  • Affects opennlp-symspell 3.0.0-M4 and 3.0.0-M5 only
  • Unbounded map pre-sizing in SymSpellModelSerializer.create() causes OOM
  • 1.x and 2.x releases unaffected; fixed in 3.0.0-M6

Vulnerabilities mentionedAll →

CVEVulnerabilityCVSSEPSSFlagsAffectedExposurePublished
CVE-2026-67211
OOM Denial of Service in Apache OpenNLP opennlp-spellcheck 3.0.0-M4/M5

Apache OpenNLP's opennlp-spellcheck extension, introduced in 3.0.0-M4 and present in 3.0.0-M5, contains a flaw in SymSpellModelSerializer.create(): the unigramCount and bigramCount 32-bit integers read from a binary SymSpell model stream are passed directly to LinkedHashMap.newLinkedHashMap() with only a non-negative check and no upper bound. An attacker who controls a .bin model file sets either count to Integer.MAX_VALUE (or any heap-exhausting value), causing the map to be pre-sized to 2^30 entries and a 4-8 GB backing array to be allocated on the first put(), crashing the JVM with an OutOfMemoryError; a malicious file of well under 100 bytes plus a single real entry is sufficient. The attacker gains denial of service against any process that deserializes the crafted model, via paths including SymSpellModels.deserialize(InputStream), SymSpellModels.fromBytes(byte[]), classpath loading through SymSpellModelResolver.resolveByLanguage(String), the CorrectTextTool command-line tool, and model-archive loading through the registered ArtifactSerializer. Users running OpenNLP 3.0.0-M4 or 3.0.0-M5 who load SymSpell models from untrusted or semi-trusted origins are affected; OpenNLP 1.x and 2.x releases do not contain the vulnerable code. No public proof-of-concept is known, the issue is not on the CISA KEV list, CVSS scoring is pending, and no in-the-wild exploitation has been reported.

Do: Upgrade to Apache OpenNLP 3.0.0-M6, which validates both count fields against an upper bound before pre-sizing (default 10,000,000 entries, raisable via the OPENNLP_MAX_ENTRIES system property at JVM startup if you load larger dictionaries; note this property also relaxes the shared model-reader limit). Until you can upgrade, treat SymSpell .bin model files from untrusted or semi-trusted sources as untrusted input and avoid loading them through any affected path - SymSpellModels.deserialize/fromBytes, SymSpellModelResolver, the CorrectTextTool CLI, or ArtifactSerializer-based model archives. Audit where your applications source their spell-check models to confirm no externally supplied models are loaded at startup or runtime.

7.5
  • Apache OpenNLP opennlp-spellcheck extension 3.0.0-M4, 3.0.0-M5
nichelikely at most a few thousand JVM deployments (milestone pre-release of a niche library extension)
Full article

Posted by Richard Zowalla on Sep 11 Severity: moderate Affected versions: - Apache OpenNLP (org.apache.opennlp:opennlp-symspell) 3.0.0-M4 before 3.0.0-M6 Description: OOM Denial of Service via Unbounded Map Pre-Sizing in Apache OpenNLP SymSpellModelSerializer Versions Affected: - 3.0.0-M4 - 3.0.0-M5 (The opennlp-spellcheck extension was introduced in 3.0.0-M4. Releases 1.x and 2.x do not contain the affected code.) Description: The SymSpellModelSerializer.create() method...

This source does not provide full text. Read it at seclists.org.