CVE-2026-43904
WysokieCVSS 7.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 7 - wyżej niż 7% wszystkich znanych CVE
Streszczenie
OpenImageIO przed wersjami 3.0.18.0 i 3.1.13.0 zawiera podatność, która pozwala na przepełnienie sterty do 65535 bajtów w wyniku nieprawidłowego ograniczenia długości uruchomienia w plikach .pic. Problem występuje w kodzie odpowiedzialnym za przetwarzanie RLE.
Ocena ryzyka
Wykorzystanie tej podatności może prowadzić do zdalnego wykonania kodu lub destabilizacji systemu, co stwarza poważne zagrożenie dla bezpieczeństwa aplikacji przetwarzających obrazy.
Rekomendacja
Zaleca się aktualizację OpenImageIO do wersji 3.0.18.0 lub 3.1.13.0, aby usunąć tę podatność oraz przeprowadzenie audytu bezpieczeństwa aplikacji korzystających z tej biblioteki.
Inne podatności w OpenImageIO
Zobacz wszystkie- CVE-2026-113681Średnie
OpenImageIO w wersjach przed 3.0.20.0, 3.1.x przed 3.1.15.0 i 3.2.x przed 3.2.0.3-beta1 zawiera przepełnienie liczb całkowitych w cineon::Codec::Read, które zaniża rozmiar bufora linii skanowania, powodując odczyt poza granicami sterty. Atakujący może dostarczyć spreparowany plik Cineon z ogromną zadeklarowaną szerokością, która zawija obliczenie rozmiaru do zera, przez co UnPackPacked czyta poza 4-bajtowym buforem i powoduje awarię aplikacji.
- CVE-2026-67549Wysokie
OpenImageIO to zestaw narzędzi do odczytu, zapisu i manipulacji plikami graficznymi. Przed wersją 3.1.16.0, specjalnie spreparowany 1-bitowy ciągły obraz TIFF w trybie CMYK jest udostępniany przez natywny specyfikator obrazu uint1, więc wywołujący alokuje bufor bitowy. Funkcja tiffinput::read_native_scanline_locked() wywołuje jednak tiffinput::bit_convert() z 8-bitowym wyjściem i zapisuje jeden rozwinięty bajt na wartość do mniejszego bufora, co powoduje zapis poza stertą i uszkodzenie pamięci. Problem naprawiono w wersji 3.1.16.0.
- CVE-2026-65970Średnie
W OpenImageIO przed wersją 3.1.16.0 spreparowany plik TIFF skompresowany ZIP, przetwarzany z włączonym wielowątkowym TIFF, może spowodować, że TIFFInput::read_native_scanlines() zwróci wynik przez ścieżkę błędu, podczas gdy asynchroniczne zadania dekompresji pasków pozostają w kolejce. Ponieważ task_set jest zadeklarowany przed ok i compressed_scratch, przechwycone obiekty są niszczone przed destruktorem task_set, co pozwala zadaniom roboczym używać nieaktualnej pamięci stosu i sterty.
- CVE-2026-65969Średnie
W OpenImageIO przed wersjami 3.0.21.0, 3.1.16.0 i 3.2.0.3-beta1 obcięty plik TGA może pozostawić oczekującą ramkę GIF, która jest przetwarzana podczas zamykania wyjścia. Funkcja gifsplitpalette() oblicza numpixels pomnożone przez szerokość partycji palety w 32-bitowej arytmetyce ze znakiem; duży obraz powoduje przepełnienie tego wyniku pośredniego, uszkadza subpixelsa i prowadzi do odczytu poza granicami bufora podczas budowania palety GIF.
- CVE-2026-63638Wysokie
OpenImageIO to zestaw narzędzi do odczytu, zapisu i manipulacji plikami graficznymi. Przed wersjami 3.0.21.0, 3.1.16.0 i 3.2.0.3-beta1, specjalnie spreparowany obraz Cineon może deklarować nieobsługiwaną głębię bitową 26. Funkcja cineoninput::open() mapuje ją na 32-bitowy specyfikator obrazu, ale libcineon mapuje nieobsługiwaną głębię na 8-bajtową wartość, więc cineoninput::read_native_scanline() powoduje zapis danych kontrolowanych przez atakującego poza bufor wywołującego (4 bajty na piksel), co prowadzi do zapisu poza stertą i uszkodzenia pamięci. Problem naprawiono w wersjach 3.0.21.0, 3.1.16.0 i 3.2.0.3-beta1.
- CVE-2026-63635Średnie
W OpenImageIO przed wersjami 3.0.21.0, 3.1.16.0 i 3.2.0.3-beta1 spreparowany plik PSD z nieprawidłowym color_mode omija normalną walidację, gdy włączone jest oiio:rawcolor lub psd:rawdata. Funkcja psdinput::setup() używa wartości kontrolowanej przez atakującego do indeksowania stałych tablic trybów kolorów, powodując globalny odczyt poza granicami i potencjalnie fałszywą alokację.
- CVE-2026-63422Wysokie
OpenImageIO to zestaw narzędzi do odczytu, zapisu i manipulacji plikami graficznymi. Przed wersjami 3.0.21.0, 3.1.16.0 i 3.2.0.3-beta1, prawidłowy kafelkowy obraz OpenEXR, którego szerokość nie jest wielokrotnością szerokości kafelka, może wywołać przepełnienie przy odczycie częściowego prostokąta krawędziowego. Funkcja openexrinput::read_native_tiles() kopiuje każdy wiersz do bufora wywołującego, używając dopełnionego całego kafelka scanline_stride zamiast user_scanline_bytes dla żądanego prostokąta, co prowadzi do zapisu poza stertą i uszkodzenia pamięci. Problem naprawiono w wersjach 3.0.21.0, 3.1.16.0 i 3.2.0.3-beta1.
- CVE-2026-63420Średnie
W OpenImageIO przed wersjami 3.0.21.0, 3.1.16.0 i 3.2.0.3-beta1 indeksowany plik PSD z metadanymi przezroczystości tworzy mniej buforów channel_buffers niż wartość spec.nchannels reklamowana przez ścieżkę rawcolor. Gdy włączone jest oiio:rawcolor lub psd:rawdata, funkcja psdinput::read_native_scanline() przekazuje spec.nchannels do psdinput::interleave_row(), co indeksuje poza channel_buffers.
- CVE-2026-63419Wysokie
OpenImageIO to zestaw narzędzi do odczytu, zapisu i manipulacji plikami graficznymi. Przed wersjami 3.0.21.0, 3.1.16.0 i 3.2.0.3-beta1, kafelkowy obraz IFF tylko z buforem Z jest udostępniany z 16-bitowym publicznym specyfikatorem obrazu, podczas gdy dekoder zachowuje 32-bitowy wewnętrzny rozmiar piksela. Funkcja iffinput::read_native_tile() kopiuje zgodnie z m_header.pixel_bytes() zamiast imagespec::tile_bytes(true), a nieudany odczyt może pozostawić m_buf niepusty, więc późniejsze wywołanie kopiuje częściowo zainicjowane dane do zbyt małego bufora, co prowadzi do zapisu poza stertą i uszkodzenia pamięci. Problem naprawiono w wersjach 3.0.21.0, 3.1.16.0 i 3.2.0.3-beta1.
- CVE-2026-59956Średnie
W OpenImageIO przed wersjami 3.0.20.0, 3.1.15.0 i 3.2.0.3-beta1 nieskompresowany 16-bitowy obraz IFF z buforem Z powoduje, że iffinput::readimg() alokuje tymczasową linię skanowania na podstawie m_header.rgba_count, ale kopiuje z niej przy użyciu m_header.pixel_bytes(), którego krok obejmuje również bajty bufora Z. Zbyt duże memcpy odczytuje poza tymczasowy bufor sterty i kopiuje sąsiednią pamięć do obrazu wyjściowego.
Oryginalny opis (angielski, źródło NVD)
OpenImageIO is a toolset for reading, writing, and manipulating image files of any image file format relevant to VFX / animation. Prior to 3.0.18.0 and 3.1.13.0, softimageinput.cpp:469 (mixed RLE) and :345 (pure RLE) do not clamp the run length to remaining scanline width before writing pixels. The raw packet path (line 403) correctly clamps with std::min, but RLE paths skip this check. A crafted .pic file causes heap overflow up to 65535 bytes. This vulnerability is fixed in 3.0.18.0 and 3.1.13.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

