HIGH🇬🇧 English

CVE-2026-43825

Apache OpenNLP: RCE przez niebezpieczną deserializację w SvmDoccatModel

CVSS 7.3v3.1pub. 2026-07-06upd. 2026-07-08

Apache OpenNLP w wersjach 3.x przed 3.0.0-M4 zawiera podatność na niebezpieczną deserializację (CWE-502) w metodzie SvmDoccatModel.deserialize(), która może prowadzić do zdalnego wykonania kodu (RCE). Zagrożone są aplikacje korzystające z modułu libsvm do kategoryzacji dokumentów, które wczytują modele z niezaufanych źródeł.

Pokaż oryginał (EN)

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.

🤖 Analiza AI
Jak działa

Metoda SvmDoccatModel.deserialize(InputStream) przekazuje strumień kontrolowany przez atakującego bezpośrednio do java.io.ObjectInputStream i wywołuje readObject() bez skonfigurowanego ObjectInputFilter. Java materializuje wszystkie klasy wskazane w strumieniu jeszcze przed rzutowaniem wyniku na SvmDoccatModel — co oznacza, że obcy graf obiektów jest w pełni deserializowany zanim nastąpi jakiekolwiek sprawdzenie typów. Jeśli na ścieżce klas (classpath) aplikacji konsumującej znajduje się znany gadget chain deserializacji, spreparowany payload dostarczony do metody deserialize() pozwala na wykonanie dowolnego kodu w JVM. Metoda jest publiczna i statyczna, więc dowolny kod wywołujący może przekazać do niej niezaufany strumień.

Skutki

Atakujący może osiągnąć zdalne wykonanie kodu (RCE) w procesie JVM, który wczytuje instancje SvmDoccatModel z niezaufanych lub słabo kontrolowanych źródeł. Kompromitacja procesu może skutkować naruszeniem poufności, integralności oraz dostępności danych i systemu.

Mitygacja

Należy zaktualizować Apache OpenNLP do wersji 3.0.0-M4 lub nowszej. Użytkownicy, którzy nie mogą natychmiast przeprowadzić aktualizacji, powinni traktować wszystkie strumienie SvmDoccatModel jako niezaufane dane wejściowe i unikać wywoływania SvmDoccatModel.deserialize() na strumieniach dostarczanych przez użytkowników końcowych lub pobieranych z zewnętrznych źródeł bez weryfikacji integralności (np. podpisów kryptograficznych).

Kogo dotyczy

Apache OpenNLP w wersjach z gałęzi 3.x przed 3.0.0-M4 (moduł libsvm do kategoryzacji dokumentów; podatność wprowadzona w OPENNLP-1808, obecna wyłącznie w linii 3.x). Wersje wcześniejsze (2.x i starsze) nie zawierają podatnego modułu.

Uwagi

Apache OpenNLP samo w sobie nie dostarcza żadnego znanego gadget chain — realne ryzyko RCE dotyczy aplikacji downstream, które osadzają moduł libsvm razem z podatnymi zależnościami tranzaktywnymi zawierającymi gadget chain (np. popularnych bibliotek Java). Podatność zgłoszona i opublikowana 2026-07-06 na liście oss-security.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L
  • Apache Opennlp

    APP
    Apache
    3.0.0
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
RCEDeserialization
CWE
Referencje

Powiązane podatności

CVE-2026-40682CRITICAL9.1PL ✓ten sam produkt

XXE w Apache OpenNLP — ujawnienie plików i SSRF przez parsowanie słowników

CVE-2026-42027CRITICAL9.8PL ✓ten sam produkt

Apache OpenNLP: arbitralne ładowanie klas przez manifest modelu (RCE-adjacent)

CVE-2017-12620CRITICAL9.8PL ✓ten sam produkt

Apache OpenNLP — podatność XXE przy ładowaniu modeli i słowników XML

CVE-2026-42440HIGH7.5ten sam produkt

OOM Denial of Service via Unbounded Array Allocation in Apache OpenNLP AbstractModelReader  Versions Affected...

CVE-2026-63317MEDIUM5.6ten sam produkt

Arbitralne tworzenie instancji klasy przez Generator Descriptor XML i Format Name w Apache OpenNLP Wersje dot...