CVE-2026-43905
WysokieCVSS 7.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 7 - wyżej niż 7% wszystkich znanych CVE
Streszczenie
W OpenImageIO przed wersjami 3.0.18.0 i 3.1.13.0 występuje podatność związana z obliczaniem rozmiaru bufora w pliku jpeg2000input.cpp, co prowadzi do przepełnienia sterty. Problem ten występuje, gdy iloczyn wymiarów obrazu przekracza maksymalną wartość dla 32-bitowej arytmetyki, co skutkuje alokacją zbyt małego bufora.
Ocena ryzyka
Przepełnienie sterty może prowadzić do nieautoryzowanego dostępu do pamięci, co stwarza ryzyko wykonania złośliwego kodu i potencjalnego przejęcia kontroli nad systemem. Organizacje powinny być świadome zagrożeń związanych z używaniem podatnych wersji oprogramowania.
Rekomendacja
Zaleca się aktualizację OpenImageIO do wersji 3.0.18.0 lub 3.1.13.0, aby usunąć tę podatność. Dodatkowo, warto monitorować i testować aplikacje korzystające z tego narzędzia w celu wykrycia potencjalnych problemów.
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, jpeg2000input.cpp:395 computes buffer size as const int bufsize = w * h * ch * buffer_bpp using signed 32-bit arithmetic. When the product exceeds INT_MAX, the result wraps to 0 or a small value. m_buf.resize() allocates an undersized buffer, and subsequent pixel write loops cause heap overflow. Conditional on USE_OPENJPH build flag. This vulnerability is fixed in 3.0.18.0 and 3.1.13.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

