cbcvebase.
CVE-2026-43825
published 2026-07-06

CVE-2026-43825: Untrusted Java Deserialization in Apache OpenNLP SvmDoccatModel Versions Affected: before 3.0.0-M4 (libsvm document categorization module; introduced in…

PriorityP260high7.3CVSS 3.1
AVNACLPRNUINSUCLILAL
EPSS
8.80%
94.6th percentile
Untrusted Java Deserialization in Apache OpenNLP SvmDoccatModel Versions Affected: before 3.0.0-M4 (libsvm document categorization module; introduced in OPENNLP-1808 and only present on the 3.x line) Description: SvmDoccatModel.deserialize(InputStream) reads an attacker-controlled stream with java.io.ObjectInputStream and calls readObject() without an ObjectInputFilter installed. ObjectInputStream materialises every class referenced in the stream before the resulting object is cast to SvmDoccatModel, so the cast that follows readObject() executes only after the foreign object graph has already been deserialised in full. If a Java deserialization gadget chain is available on the consumer's classpath, a crafted payload supplied to deserialize() executes arbitrary code in the JVM that loads it. Apache OpenNLP itself does not ship a known gadget chain, so the realistic risk is to downstream applications that embed the libsvm module alongside vulnerable transitive dependencies. The method is public and static, so any caller can pass an untrusted stream to it directly. The practical impact is remote code execution against processes that load SvmDoccatModel instances from untrusted or semi-trusted origins. Mitigation: 3.x users should upgrade to 3.0.0-M4. Users who cannot upgrade immediately should treat all serialized SvmDoccatModel streams as untrusted input unless their provenance is verified, and should avoid invoking SvmDoccatModel.deserialize() on streams supplied by end users or fetched from third-party sources without integrity checks.

Affected

4 ranges
VendorProductVersion rangeFixed in
apacheopennlp
apacheopennlp
apacheopennlp
apache_software_foundationapache_opennlp_core_ml_libsvm>= 3.0.0-M1 < 3.0.0-M43.0.0-M4

Detection & IOCsextracted from sources · hover to see the quote

  • Detect invocation of SvmDoccatModel.deserialize() receiving input from untrusted/external sources — the vulnerable public static method passes an attacker-controlled InputStream directly to java.io.ObjectInputStream.readObject() without an ObjectInputFilter
  • Monitor JVM processes loading Apache OpenNLP opennlp-tools versions on the 3.x line (before 3.0.0-M4) that include the libsvm document categorization module (opennlp-doccat-libsvm), as the vulnerable code is exclusive to that module and version range
  • Alert on Java deserialization gadget chain execution patterns (e.g., Runtime.exec, ProcessBuilder, reflection-based class loading) originating from processes known to use Apache OpenNLP's SvmDoccatModel, as exploitation requires a gadget chain present on the classpath
  • Flag any application endpoint or code path that passes end-user-supplied or third-party-fetched streams into SvmDoccatModel.deserialize() — the method is public and static, making it directly reachable by any caller without access controls
  • ·Apache OpenNLP itself does not ship a known gadget chain — exploitation is only realistic when the vulnerable libsvm module is deployed alongside other libraries that provide a usable deserialization gadget chain on the classpath
  • ·The vulnerability is confined to the 3.x release line only (introduced in OPENNLP-1808); 2.x and earlier versions of Apache OpenNLP are not affected
  • ·Red Hat confirmed the vulnerable code is not present in their supported product offerings; Red Hat Data Grid 8 and JBoss EAP Expansion Pack packages are still under investigation

CVSS provenance

nvdv3.17.3HIGHCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
vendor_redhat7.3HIGH
Stop checking back — get the weekly exploitation signal.

Every Monday: what got weaponized or added to CISA KEV in the last seven days — each CVE cross-linked to its PoC, Nuclei template, and detection rule. Free, one email a week, unsubscribe in one click.