CVE-2026-89045
ŚrednieCVSS 4.0Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 2 - wyżej niż 2% wszystkich znanych CVE
Streszczenie
Biblioteka zstd-jni w wersjach 1.4.8-4 do 1.5.7-13 nie waliduje ujemnych wartości parametru długości w metodzie ZstdInputStreamNoFinalizer.read(). Pozwala to atakującemu wywołać nieskończoną pętlę, która blokuje monitor strumienia i uniemożliwia dostęp innym wątkom.
Ocena ryzyka
Atakujący może doprowadzić do zawieszenia aplikacji poprzez zablokowanie dostępu do strumienia dla wszystkich wątków, co skutkuje odmową usługi. Problem jest szczególnie istotny w aplikacjach wielowątkowych przetwarzających dane od niezaufanych źródeł.
Rekomendacja
Zaktualizuj zstd-jni do wersji nowszej niż 1.5.7-13, gdy będzie dostępna, oraz waliduj długości przekazywane do metod odczytu. Do czasu aktualizacji rozważ ograniczenie przetwarzania niezaufanych danych wejściowych w aplikacjach korzystających z tej biblioteki.
Inne podatności w zstd-jni
Zobacz wszystkie- CVE-2026-90852Wysokie
Wykryto podatność w luben zstd-jni do wersji 1.5.7-13. Dotyczy funkcji ZstdCompressCtx.loadDict w pliku ZstdCompressCtx.java w komponencie współdzielenia słowników. Manipulacja prowadzi do użycia po zwolnieniu (use after free). Atak może być wykonany zdalnie. Poprawka dostępna w wersji 1.5.7-14.
- CVE-2026-90560Wysokie
zstd-jni w wersjach od 1.2.0 do 1.5.7-13 zawiera podatność odczytu poza granicami w konstruktorze ZstdDictDecompress, ponieważ argumenty offset i length nie są walidowane względem granic tablicy słownika. Atakujący może podać dowolne wartości offset lub length, aby odczytać pamięć poza końcem dostarczonej tablicy, co potencjalnie powoduje zakończenie pracy JVM.
- CVE-2026-89046Wysokie
Biblioteka zstd-jni w wersjach 1.5.5-6 do 1.5.7-13 zawiera lukę odczytu poza zakresem pamięci w metodzie Zstd.getFrameContentSize, która nie waliduje ujemnych wartości srcPosition. Atakujący może podać ujemne przesunięcia omijające sprawdzenia granic i dotrzeć do natywnego parsera nagłówka ramki.
- CVE-2026-87877Wysokie
zstd-jni przed wersją 1.5.7-14 nie sprawdza stanu zamknięcia w metodach setDict, setLongMax, setLevel i setRefMultipleDDicts klas strumieni. Atakujący mogą wywołać te metody na zamkniętych strumieniach, aby zapisywać przez zwolnione wskaźniki natywne, uszkadzając niezwiązane obiekty lub powodując awarię JVM.
- CVE-2026-87825Wysokie
zstd-jni przed wersją 1.5.7-14 zawiera podatność use-after-free, gdzie strumienie i konteksty trzymają współdzielony zamek słownika tylko podczas wywołania ładowania, co pozwala na zamknięcie słownika, gdy jest nadal używany. Atakujący mogą zamknąć słownik po powiązaniu go ze strumieniem lub kontekstem, powodując, że kolejne operacje odczytu lub zapisu uzyskują dostęp do zwolnionej pamięci natywnej, co prowadzi do cichego uszkodzenia danych lub awarii JVM.
- CVE-2026-87824Wysokie
zstd-jni przed wersją 1.5.7-14 nie sprawdza pojemności bufora próbek w metodzie Zstd.trainFromBufferDirect, co pozwala atakującym na odczyt poza granicami bufora poprzez podanie zbyt dużych długości poszczególnych próbek. Atakujący mogą wywołać dostęp do pamięci poza zakresem, dostarczając spreparowane tablice długości próbek, które powodują, że natywna implementacja wychodzi poza alokację bufora, co prowadzi do zakończenia działania JVM.
- CVE-2026-87823Wysokie
zstd-jni przed wersją 1.5.7-14 wykonuje 32-bitowe sprawdzenia granic ze znakiem na trzech natywnych metodach dotyczących rozmiaru ramki dla bezpośrednich buforów ByteBuffer, co pozwala na odczyt pamięci poza zakresem poprzez ujemne lub przepełnione offsety. Atakujący mogą podać ujemne wartości offsetów bliskie Integer.MIN_VALUE, aby odczytać nieodwzorowaną pamięć, powodując zakończenie działania JVM lub wyodrębniając dane o rozmiarze ramki z nieprzewidzianych lokalizacji pamięci.
- CVE-2026-87795Wysokie
Wersje zstd-jni przed 1.5.7-14 nie walidują parametrów offset i length w konstruktorze ZstdDictCompress, co umożliwia odczyty pamięci poza zakresem. Atakujący może dostarczyć niezaufane wartości offset lub length, aby odczytać natywną pamięć sterty do słownika kompresji, co zwykle powoduje awarie JVM.
Oryginalny opis (angielski, źródło NVD)
zstd-jni versions 1.4.8-4 through 1.5.7-13 fail to validate negative length parameters in ZstdInputStreamNoFinalizer.read(), allowing attackers to trigger infinite loops. Attackers can pass negative length values to cause the read method to spin indefinitely while holding the stream monitor, blocking all other threads from accessing the stream.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

