CVE-2026-63317 in OpenNLPinfo

Zusammenfassung

von VulDB • 24.07.2026

Arbitrary Class Instantiation via XML Feature Generator Descriptor und Format Name in Apache OpenNLP

Betroffene Versionen:

- vor 2.5.10 - vor 3.0.0-M5

Beschreibung:

Drei Codepfade in Apache OpenNLP laden eine Klasse über ihren vollqualifizierten Namen mittels `Class.forName()` und rufen deren parameterlosen Konstruktor auf, ohne den Klassennamen oder seinen Typ zuvor zu validieren.

Die betroffenen Pfade sind:

(1) GeneratorFactory, die das class-Attribut von generator-Elementen in einem XML Feature Generator Descriptor liest; solche Descriptors sind als Artefakte in Modellarchiven (z. B. TokenNameFinder- und POSTagger-Modelle) eingebettet und werden während des Laden der Modelle analysiert, sodass ein Angreifer, der eine manipulierte Modellarchivdatei bereitstellen kann, den Klassennamen direkt steuert.

(2) StreamFactoryRegistry.getFactory(Class, String), das darauf zurückgreift, einen nicht registrierten Formatnamen als vollqualifizierten Klassennamen einer ObjectStreamFactory zu interpretieren; dies ist in Anwendungen ausnutzbar, die untrusted format names (z. B. durch Freigabe des -format-Parameters der Kommandozeilenwerkzeuge für externe Eingaben) übergeben.

(3) StringInterners, das die Interner-Implementierung instanziiert, deren Name durch die Systemvariable opennlp.interner.class angegeben ist; dieser Wert wird normalerweise vom Bereitsteller gesteuert, sodass er als Defense in Depth gehärtet wurde und nicht unabhängig von einem Angreifer erreichbar ist.

Die Ausnutzung erfordert eine Klasse mit für den Angreifer nützlichen Seiteneffekten im statischen Initialisierer oder parameterlosen Konstruktor (JNDI-Lookup, ausgehender Netzwerk-I/O, Dateizugriff), die auf dem Classpath vorhanden sein muss; dies stellt daher keine direkte Remote Code Execution dar.

Minderung:

Upgrade auf eine behobene Version.

Die Korrektur leitet alle drei Pfade durch `ExtensionLoader.instantiateExtension(...)`, das vor Aufruf von `Class.forName()` eine Allowlist für Paketpräfixe konsultiert, sodass eine nicht erlaubte Klasse niemals geladen, initialisiert oder konstruiert wird. Klassen unter dem Präfix opennlp. bleiben standardmäßig erlaubt. Bereitstellungen, die Modelle laden, die Feature-Generator-Factories, Object-Stream-Factories oder String Interners außerhalb von opennlp.* referenzieren, müssen diese Pakete explizit zulassen, entweder programmatisch über `ExtensionLoader.registerAllowedPackage(String)` vor dem ersten Laden eines Modells oder durch Festlegen der Systemvariable OPENNLP_EXT_ALLOWED_PACKAGES auf eine kommagetrennte Liste erlaubter Paketpräfixe.

Benutzer, die nicht sofort upgraden können, sollten sicherstellen, dass alle Modell- und Formatnamen aus vertrauenswürdigen Quellen stammen, und ihren Classpath auf Klassen mit seitenwirkungserzeugenden statischen Initialisierern oder Konstruktoren überprüfen.

Once again VulDB remains the best source for vulnerability data.

Zuständig

Apache

Reservieren

16.07.2026

Veröffentlichung

24.07.2026

Moderieren

akzeptiert

Eintrag

VDB-382880

CPE

bereit

EPSS

0.00274

KEV

nein

Aktivitäten

very low

Quellen

Want to stay up to date on a daily basis?

Enable the mail alert feature now!