CVE-2026-106451
WysokieCVSS 7.3Streszczenie
Biblioteka yawkat LZ4 Java w wersjach od 1.7.0 do 1.11.4 zawiera podatność polegającą na niebezpiecznym tworzeniu pliku tymczasowego. Atakujący z dostępem do wspólnego katalogu tymczasowego może podmienić plik biblioteki natywnej przed jej załadowaniem, co może prowadzić do wykonania kodu w kontekście ofiary.
Ocena ryzyka
Ryzyko obejmuje lokalne podniesienie uprawnień lub wykonanie złośliwego kodu na maszynie ofiary. Skuteczny atak wymaga specyficznych warunków, ale w przypadku powodzenia może całkowicie skompromitować system.
Rekomendacja
Zaleca się natychmiastową aktualizację do wersji 1.11.4, która usuwa podatność. Dodatkowo warto rozważyć użycie prywatnego katalogu tymczasowego lub biblioteki systemowej.
Inne podatności w yawkat LZ4 Java
Zobacz wszystkie- CVE-2026-106453Średnie
W yawkat LZ4 Java przed wersją 1.11.2 klasa LZ4DecompressorWithLength ufa czterobajtowemu nagłówkowi długości przed walidacją danych wejściowych, co pozwala pięciobajtowemu wejściu zadeklarować duży rozmiar wyjściowy i wyczerpać stertę JVM. Przeciążenia zapisujące do bufora dostarczonego przez wywołującego nie są podatne.
- CVE-2026-106452Średnie
W yawkat LZ4 Java przed wersją 1.11.2 klasa LZ4BlockInputStream.refill() waliduje pole compressedLen w nagłówku LZ4Block jako nieujemne, ale przydziela bufor wejściowy o rozmiarze kontrolowanym przez atakującego przed odczytaniem danych. Strumień zawierający tylko nagłówek może zażądać alokacji bliskiej 2 GiB i wyczerpać stertę JVM.
- CVE-2026-106450Średnie
W yawkat LZ4 Java przed wersją 1.11.4 klasa LZ4FrameInputStream.readHeader() przydziela dwa bufory bloków po 4 MiB przy odczycie nagłówka ramki o maksymalnym rozmiarze bloku. Tryb domyślny pozwala atakującemu na strumienie z wieloma pustymi ramkami, powodując alokację około 8 MiB na każde 11 bajtów wejścia, bez generowania danych wyjściowych.
- CVE-2026-106449Niskie
yawkat LZ4 Java zapewnia kompresję LZ4 dla Javy. Przed wersją 1.11.4 net.jpountz.lz4.LZ4BlockInputStream skonfigurowany z stopOnEmptyBlock ustawionym na false obsługuje każdy poprawnie sformułowany pusty LZ4Block poprzez rekurencyjne wywołanie refill(), co pozwala długiej sekwencji pustych bloków w kontrolowanym przez atakującego strumieniu skompresowanym wyczerpać stos wątku dekodującego i zgłosić StackOverflowError. Domyślne ustawienie stopOnEmptyBlock to true i nie jest dotknięte, a problem nie powoduje uszkodzenia pamięci.
- CVE-2026-59949Średnie
W bibliotece yawkat LZ4 Java przed wersją 1.11.1 funkcje haszujące XXHash oparte na JNI nie sprawdzają poprawności tablicy bajtów oraz argumentów off i len, co pozwala na przekazanie pustych tablic lub zbyt dużych zakresów do kodu natywnego. Może to prowadzić do odczytu poza tablicą Java i awaryjnego zakończenia działania JVM. Problem został naprawiony w wersji 1.11.1.
Oryginalny opis (angielski, źródło NVD)
yawkat LZ4 Java provides LZ4 compression for Java. From 1.7.0 until 1.11.4, net.jpountz.util.Native.load() uses File.createTempFile to create an exclusive temporary .lck file but derives the native-library path by removing the suffix, then FileOutputStream opens that predictable path without exclusive creation, allowing another local user with access to the same shared temporary directory to create or replace the library file before System.load() uses it. Successful exploitation depends on shared-directory permissions, host protections, and winning the race, and can execute native code as the victim; hardened systems may instead cause library loading to fail and fall back to Java implementations. Configurations using a system library, a private java.io.tmpdir, or Java-only implementations are not affected. This issue is fixed in version 1.11.4.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

