CVE-2026-43825
published 2026-07-06CVE-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
| Vendor | Product | Version range | Fixed in |
|---|---|---|---|
| apache | opennlp | — | — |
| apache | opennlp | — | — |
| apache | opennlp | — | — |
| apache_software_foundation | apache_opennlp_core_ml_libsvm | >= 3.0.0-M1 < 3.0.0-M4 | 3.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.
VulDB
Apache OpenNLP up to 3.0.0-M3 Libsvm SvmDoccatModel.deserialize deserialization
vuldb·2026-07-06·CVSS 7.3
CVE-2026-43825 [HIGH] Apache OpenNLP up to 3.0.0-M3 Libsvm SvmDoccatModel.deserialize deserialization
A vulnerability was found in Apache OpenNLP up to 3.0.0-M3. It has been declared as critical. Impacted is the function SvmDoccatModel.deserialize of the component Libsvm Module. Executing a manipulation can lead to deserialization.
This vulnerability is registered as CVE-2026-43825. It is possible to launch the attack remotely. No exploit is available.
GHSA
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 l
ghsa_unreviewed·2026-07-06
CVE-2026-43825 [HIGH] CWE-502 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 l
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 load
Red Hat
org.apache.opennlp/opennlp-tools: Apache OpenNLP SvmDoccatModel: Remote code execution via untrusted Java deserialization
vendor_redhat·2026-07-06·CVSS 7.3
CVE-2026-43825 [HIGH] CWE-502 org.apache.opennlp/opennlp-tools: Apache OpenNLP SvmDoccatModel: Remote code execution via untrusted Java deserialization
org.apache.opennlp/opennlp-tools: Apache OpenNLP SvmDoccatModel: Remote code execution via untrusted Java deserialization
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 availab
No detection rules found.
No public exploits indexed.
2026-07-06
Published