CVE-2025-59732
WysokieCVSS 8.7Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 8 - wyżej niż 8% wszystkich znanych CVE
Streszczenie
Podczas dekodowania pliku OpenEXR z kompresją DWAA lub DWAB zakłada się, że wysokość i szerokość są podzielne przez 8. Jeśli nie są, pętle kopiowania zapisują do następnej wielokrotności 8, przekraczając zaalokowany bufor i uszkadzając pamięć sterty.
Ocena ryzyka
Złośliwy plik OpenEXR o wymiarach niepodzielnych przez 8 może spowodować uszkodzenie pamięci, prowadząc do awarii lub potencjalnego wykonania kodu.
Rekomendacja
Zaktualizuj bibliotekę OpenEXR do wersji 8.0 lub nowszej.
Inne podatności w OpenEXR
Zobacz wszystkie- CVE-2017-12596Wysokie
W OpenEXR 2.2.0, specjalnie przygotowany obraz powoduje nadmierne odczytywanie bufora w funkcji hufDecode w pliku IlmImf/ImfHuf.cpp podczas wykonywania exrmaketiled. Może to prowadzić do odmowy usługi lub innych nieokreślonych skutków.
- CVE-2017-9115Wysokie
W OpenEXR 2.2.0 występuje nieprawidłowe zapisanie danych o rozmiarze 2 w funkcji operatora = w pliku half.h, co może prowadzić do awarii aplikacji lub wykonania dowolnego kodu.
- CVE-2017-9113Wysokie
W OpenEXR 2.2.0 występuje nieprawidłowe zapisanie danych o rozmiarze 1 w funkcji bufferedReadPixels w pliku ImfInputFile.cpp, co może prowadzić do awarii aplikacji lub wykonania dowolnego kodu.
- CVE-2017-9111Wysokie
W OpenEXR 2.2.0 występuje nieprawidłowe zapisanie danych o rozmiarze 8 w funkcji storeSSE w pliku ImfOptimizedPixelReading.h, co może prowadzić do awarii aplikacji lub wykonania dowolnego kodu.
- CVE-2026-42217Krytyczne
OpenEXR w wersjach od 3.0.0 do przed 3.2.9, 3.3.0 do przed 3.3.11 oraz 3.4.0 do przed 3.4.11 ma problem z funkcją readVariableLengthInteger(), która dekoduje zmienną długość liczby całkowitej z niezaufanego wejścia EXR bez ograniczenia liczby przesunięć. Po wystarczającej liczbie bajtów kontynuacji, kod wykonuje przesunięcie w lewo o 70 na 64-bitowej wartości, co prowadzi do nieokreślonego zachowania.
- CVE-2026-42216Krytyczne
W bibliotece OpenEXR w wersjach od 3.0.0 do 3.2.9, od 3.3.0 do 3.3.11 oraz od 3.4.0 do 3.4.11 wykryto podatność w funkcji IDManifest::init(). Podczas rekonstrukcji ciągów znaków z reprezentacji skompresowanej prefiksowo, kod odczytuje bajty bez sprawdzenia, czy bieżący ciąg ma co najmniej dwa bajty, co może prowadzić do odczytu poza zakresem.
- CVE-2026-88384Średnie
OpenEXR 3.4.14 zawiera podatność na dereferencję pustego wskaźnika w ścieżce parsowania atrybutów C++. Specjalnie spreparowany plik EXR zawierający atrybut nieznanego typu z dataSize ustawionym na zero powoduje utworzenie nieprzezroczystego atrybutu z pustym wskaźnikiem packed_data. Konstruktor OpaqueAttribute przekazuje ten pusty wskaźnik do memcpy() bez walidacji warunku zerowego rozmiaru, co prowadzi do niezdefiniowanego zachowania i zakończenia procesu.
- CVE-2026-68515Wysokie
OpenEXR przed wersjami 3.2.11, 3.3.13 i 3.4.14 zawiera podatność w narzędziu exrmultiview, które może zapisywać poza stertą podczas łączenia dwóch dostarczonych przez atakującego, indywidualnie poprawnych plików EXR, gdy unia dataWindow nie jest wyrównana do próbkowania kanałów jednego widoku. Prowadzi to do zapisu poza granicami sterty.
- CVE-2026-68514Średnie
PyOpenEXR w wersjach 3.3.0-3.3.12 i 3.4.0-3.4.13 ma podatność na zapis poza stertą podczas odczytu spreparowanego pliku EXR z głębokimi scanline'ami. Specjalnie skonstruowany plik z kanałem 'left' i warstwowymi kanałami RGB może spowodować przepełnienie bufora i awarię.
- CVE-2026-68513Wysokie
OpenEXR w wersjach 3.3.0 do 3.3.12 i 3.4.0 do 3.4.13 zawiera przepełnienie bufora sterty w PyOpenEXR, wywoływane przez kolizję nazw kanałów między dosłownymi a prefiksowanymi kanałami RGB. Specjalnie spreparowany plik EXR może spowodować zapis poza granicami tablicy NumPy podczas dekodowania pikseli.
Oryginalny opis (angielski, źródło NVD)
When decoding an OpenEXR file that uses DWAA or DWAB compression, there's an implicit assumption that the height and width are divisible by 8. If the height or width of the image is not divisible by 8, the copy loops at [0] and [1] will continue to write until the next multiple of 8. The buffer td->uncompressed_data is allocated in decode_block based on the precise height and width of the image, so the "rounded-up" multiple of 8 in the copy loop can exceed the buffer bounds, and the write block starting at [2] can corrupt following heap memory. We recommend upgrading to version 8.0 or beyond.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

