CVE-2026-76844
WysokieCVSS 7.4Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 47 - wyżej niż 47% wszystkich znanych CVE
Streszczenie
zlib w wersjach od 1.2.11 do 1.3.2 zawiera przepełnienie bufora na stercie: po nieudanym zapisie write(), funkcja gz_write() zwraca bez resetowania strm.next_in, pozostawiając go wskazującego na bufor wywołującego. Późniejsze wywołanie gz* write może zapisać poza przydzieloną pamięć; każdy błąd write() może to wywołać, w tym EPIPE na deskryptorze blokującym, a w wersjach przed 1.3.1.2 po nieudanym zapisie musi nastąpić wywołanie gzclearerr().
Ocena ryzyka
Może prowadzić do awarii aplikacji lub potencjalnego wykonania kodu, co stanowi poważne zagrożenie dla systemów używających zlib.
Rekomendacja
Zaktualizuj zlib do wersji 1.3.1.2 lub nowszej, jeśli to możliwe, lub zastosuj obejście polegające na unikaniu sytuacji, w których write() może zawieść.
Inne podatności w zlib
Zobacz wszystkie- CVE-2023-45853Krytyczne
W bibliotece zlib w wersji do 1.3 w komponencie MiniZip występuje przepełnienie liczby całkowitej i wynikający z niego przepełnienie bufora sterty w funkcji zipOpenNewFileInZip4_64. Podatność może być wykorzystana poprzez długą nazwę pliku, komentarz lub pole dodatkowe.
- CVE-2022-37434Krytyczne
Biblioteka zlib w wersji do 1.2.12 zawiera podatność na odczyt lub zapis poza zakresem pamięci (heap-based buffer over-read/overflow) w funkcji inflate w pliku inflate.c, spowodowaną przez duże dodatkowe pole w nagłówku gzip. Podatność dotyczy wyłącznie aplikacji wywołujących funkcję inflateGetHeader.
- CVE-2018-25032Wysokie
Podatność w bibliotece zlib przed wersją 1.2.12 umożliwia uszkodzenie pamięci podczas kompresji danych, gdy dane wejściowe zawierają wiele odległych dopasowań.
- CVE-2016-9843Krytyczne
Funkcja crc32_big w pliku crc32.c w zlib 1.2.8 może umożliwić atakującym, zależnie od kontekstu, wywołanie nieokreślonego wpływu poprzez wektory związane z obliczaniem CRC w porządku big-endian.
- CVE-2016-9842Wysokie
Funkcja inflateMark w pliku inflate.c biblioteki zlib w wersji 1.2.8 może umożliwiać atakującym zależnym od kontekstu wywołanie nieokreślonego wpływu poprzez wektory obejmujące przesunięcia w lewo liczb całkowitych ujemnych.
- CVE-2016-9841Krytyczne
W bibliotece zlib w wersji 1.2.8 w pliku inffast.c występuje podatność związana z nieprawidłową arytmetyką wskaźników. Może ona umożliwić atakującemu zależnemu od kontekstu wywołanie nieokreślonych skutków.
- CVE-2016-9840Wysokie
W bibliotece zlib w wersji 1.2.8 w pliku inftrees.c występuje podatność polegająca na nieprawidłowej arytmetyce wskaźników. Może to pozwolić atakującemu na wywołanie nieokreślonych skutków w zależności od kontekstu.
- CVE-2005-2096Wysokie
Podatność w bibliotece zlib w wersji 1.2 i nowszych umożliwia zdalnemu atakującemu spowodowanie awarii systemu (odmowa usługi) poprzez wysłanie spreparowanego skompresowanego strumienia z niekompletnym opisem kodu o długości większej niż 1, co prowadzi do przepełnienia bufora. Przykładem jest wykorzystanie spreparowanego pliku PNG.
- CVE-2026-85091Wysokie
Biblioteka zlib w wersjach od 1.3.1.2 do 1.3.2 zawiera podatność na przepełnienie bufora sterty w funkcji gz_vacate() podczas przetwarzania nieblokujących operacji gzwrite() z nieaktualnymi wskaźnikami zewnętrznego bufora. Atakujący może wywołać przepełnienie przez wywołanie gzprintf() lub gzvprintf() po zatrzymaniu zapisu, powodując niekontrolowane memmove() zapisujące poza granicę wewnętrznego bufora wejściowego.
- CVE-2026-22184Wysokie
Podatność w narzędziu untgz (contrib/untgz) w zlib do wersji 1.3.1.2 włącznie powoduje globalne przepełnienie bufora. Problem występuje tylko w samodzielnym narzędziu demonstracyjnym, a nie w rdzeniu biblioteki kompresji zlib. Błąd pojawia się, gdy użytkownik uruchomi untgz z nadmiernie długą nazwą archiwum podaną w wierszu poleceń, co prowadzi do zapisu poza granicami stałego bufora globalnego.
Oryginalny opis (angielski, źródło NVD)
zlib 1.2.11 through 1.3.2 contains a heap buffer overflow: after an underlying write() fails, gz_write() returns without resetting strm.next_in, leaving it pointed at the caller's buffer. A later gz* write call then derives a position from the stale pointer and writes past a heap allocation; any write() failure reaches it, including EPIPE on a blocking descriptor, and in versions before 1.3.1.2 the failed write must be followed by a gzclearerr() call.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

