CVE-2026-63317 Apache OpenNLP vulnerability
Arbitrary Class Instantiation via XML Feature Generator Descriptor and Format Name in Apache OpenNLP Versions Affected: - before 2.5.10 - before 3.0.0-M5 Description: Three code paths in Apache OpenNLP load a class by its fully-qualified name via Class.forName() and invoke its no-arg constructor without any prior validation of the class name or its type. The affected paths are: (1) GeneratorFactory, which reads the class attribute of generator elements in an XML feature generator descriptor; such descriptors are embedded as artifacts in model archives (e.g. TokenNameFinder and POSTagger models) and are parsed during model loading, so an attacker who can supply a crafted model archive controls the class name directly. (2) StreamFactoryRegistry.getFactory(Class, String), which falls back to interpreting an unregistered format name as the fully-qualified class name of an ObjectStreamFactory; this is exploitable in applications that pass untrusted format names (e.g. exposing the -format parameter of the command-line tooling to external input). (3) StringInterners, which instantiates the interner implementation named by the opennlp.interner.class system property; this value is normally deployer-controlled, so it is hardened as defense in depth rather than being independently attacker-reachable. Exploitation requires a class with attacker-useful side effects in its static initializer or no-arg constructor (JNDI lookup, outbound network I/O, filesystem access) to be present on the classpath, so this is not drop-in remote code execution. T Mitigation: Upgrade to a fixed release. The fix routes all three paths through ExtensionLoader.instantiateExtension(...), which consults a package-prefix allowlist before Class.forName() is invoked, so a disallowed class is never loaded, initialized, or constructed. Classes under the opennlp. prefix remain permitted by default. Deployments that load models referencing feature generator factories, object stream factories, or string interners outside opennlp.* must opt those packages in, either programmatically via ExtensionLoader.registerAllowedPackage(String) before the first model load, or by setting the OPENNLP_EXT_ALLOWED_PACKAGES system property to a comma-separated list of allowed package prefixes. Users who cannot upgrade immediately should ensure all model files and format names are sourced from trusted origins and should audit their classpath for classes with side-effecting static initializers or constructors.
Browse Remote Code Execution security risksQuick answer
Apache Software Foundation Apache OpenNLP should be reviewed and updated if it matches the affected versions. The recommended fix is to apply the vendor-supported patched version or the mitigation steps below, then retest the public website with Fixnx.
Who is affected
Affected versions
- < 3.0.0-M4
- < 2.5.11
Fixed versions
- Apply the latest vendor-supported patched version.
How to fix it
CVE-2026-63317 affects Apache OpenNLP and involves code or command execution. Successful exploitation may let an attacker run unintended code or operating-system commands in the affected process. Prioritize deployments that process untrusted input, expose the affected feature, or hold sensitive data. Upgrade Apache OpenNLP to 3.0.0-M4, 2.5.11 or a later vendor-supported fixed release.
- Inventory every deployment, device, package, plugin, container, build, and environment that uses Apache OpenNLP.
- Compare the installed version with the recorded affected range: < 3.0.0-M4, < 2.5.11.
- Upgrade Apache OpenNLP to 3.0.0-M4, 2.5.11 or a later vendor-supported fixed release.
- Until patched, disable the affected feature, limit untrusted input, and run the service with the lowest practical privileges.
- Review configuration, roles, tokens, network paths, and exposed endpoints connected to Apache OpenNLP; remove access that is not required.
- Review process, shell, web, audit, and network logs for unexpected commands, child processes, downloads, callbacks, or changed files.
- If exploitation is suspected, isolate affected assets, preserve evidence, rotate exposed credentials or keys, restore trusted data, and rebuild compromised systems before returning them to service.
Scan now. Google sign-in is only needed to unlock fix guidance.
Verify the fix
- Confirm every affected asset now runs the fixed vendor-supported release or has the documented mitigation for CVE-2026-63317 in place.
- Use a safe regression test to confirm the affected code or command execution path no longer produces the vulnerable behavior.
- Confirm temporary access controls, endpoint restrictions, network blocks, and least-privilege settings remain effective after the update.
- Review post-remediation logs and rerun Fixnx plus the relevant package, dependency, firmware, browser, or product-specific security check.
- Document affected assets, versions, changes, validation evidence, reviewed logs, and any credential rotation, cleanup, or replacement completed.
Related categories
Related security risks
More published guidance from the same primary category.
Trusted references
FAQ
What is affected by CVE-2026-63317?
Apache Software Foundation Apache OpenNLP versions listed as affected should be reviewed: < 3.0.0-M4, < 2.5.11.
What should I fix first?
Start with internet-facing sites, admin panels, login flows, plugins, themes, modules, packages, and systems that process user-controlled input or sensitive data.
How do I confirm the fix worked?
Apply the patched version or mitigation, clear caches where relevant, retest the affected workflow, and run a new Fixnx scan to verify public website exposure signals.
How are Fixnx security risk categories chosen?
Fixnx keeps one canonical risk page and assigns only broad, relevant categories such as ecosystem, technology area, or vulnerability class.
