CVE-2026-42027CRITICAL 9.8EPSS p48.3%
CVE-2026-42027CVE-2026-42027
apache / opennlp
Description
Arbitrary Class Instantiation via Model Manifest in Apache OpenNLP ExtensionLoader
Versions Affected: before 1.9.5, before 2.5.9, before 3.0.0-M3
Description:
The ExtensionLoader.instantiateExtension(Class, String) method loads a class by its fully-qualified name via Class.forName() and invokes its no-arg constructor, with the class name sourced from the manifest.properties entry of a model archive. The existing isAssignableFrom check correctly rejects classes that are not subtypes of the expected extension interface (BaseToolFactory for factory=, ArtifactSerializer for serializer-class-*), but the check runs after Class.forName() has already loaded and initialized the named class.
Class.forName() with default initialization semantics executes the target class's static initializer before returning, so an attacker who can supply a crafted model archive can cause the static initializer of any class on the classpath to run during model loading, regardless of whether that cla
Scoring
| CVSS 3.1 | 9.8 (CRITICAL) |
| Vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| EPSS | 0.67% probability of exploitation · percentile 48.3% · 2026-08-03T12:00:16Z |
| Published | 2026-05-04 |
| Last modified | 2026-07-15 |
Underlying weaknesses· 1
References
1
| Type | Target | Confidence | Tier |
|---|---|---|---|
| Weakness | Use of Externally-Controlled Input to Select Classes or Code ('Unsafe Reflection')cwe-470 | 0% | live |
Related by meaning· 6
Nearest entities by semantic similarity across the cs-graph corpus.