PatchSiren

PatchSiren cyber security CVE debrief

CVE-2026-42027 Apache Software Foundation CVE debrief

CVE-2026-42027 is a critical vulnerability in Apache OpenNLP's ExtensionLoader, allowing for arbitrary class instantiation via model manifest. The vulnerability affects versions before 1.9.5, before 2.5.9, and before 3.0.0-M3. An attacker can exploit this vulnerability by supplying a crafted model archive, causing the static initializer of any class on the classpath to run during model loading. This can lead to a range of attacks, including JNDI lookup, outbound network I/O, or filesystem access. The attack surface grows as third-party model distribution becomes more common. A secondary vector affects deployments that ship legitimate BaseToolFactory or ArtifactSerializer subclasses with side-effecting no-arg constructors.

Vendor
Apache Software Foundation
Product
Apache OpenNLP
CVSS
CRITICAL 9.8
CISA KEV
Not listed in stored evidence
Original CVE published
2026-05-04
Original CVE updated
2026-06-29
Advisory published
2026-05-04
Advisory updated
2026-06-29

Who should care

Users of Apache OpenNLP, especially those who load models from untrusted origins, should be aware of this vulnerability. Deployments that ship legitimate BaseToolFactory or ArtifactSerializer subclasses with side-effecting no-arg constructors are also affected. Users who cannot upgrade immediately should ensure that all model files are sourced from trusted origins and audit their classpath for classes with side-effecting static initializers or constructors.

Technical summary

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, 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, allowing an attacker to cause the static initializer of any class on the classpath to run during model loading.

Defensive priority

This vulnerability has a CVSS score of 9.8 and is considered critical. Users should prioritize upgrading to a fixed version or implementing mitigations to prevent exploitation.

Recommended defensive actions

  • Upgrade to version 2.5.9 for 2.x users
  • Upgrade to version 3.0.0-M3 for 3.x users
  • Ensure that all model files are sourced from trusted origins
  • Audit classpath for classes with side-effecting static initializers or constructors
  • Implement a package-prefix allowlist to restrict allowed classes

Evidence notes

The CVE record and NVD detail provide information on the vulnerability, its impact, and potential mitigations. The Apache OpenNLP project has released advisories and patches to address this vulnerability.

Official resources

This article is AI-assisted and based on the supplied source corpus.