CVE-2026-96639
KrytyczneCVSS 9.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 46 - wyżej niż 46% wszystkich znanych CVE
Streszczenie
Biblioteka Pillow w wersjach od 11.0.0 do 13.0.0 ma błąd w obsłudze wieloklatkowych obrazów (PSD, MPO, DCX, MIC). Przy zmianie trybu klatki na szerszy (RGB/CMYK) ponownie używany jest stary bufor o węższym trybie, co prowadzi do zapisu poza granicami pamięci i awarii, a w niektórych przypadkach do wykonania kodu.
Ocena ryzyka
Przetwarzanie spreparowanego obrazu może doprowadzić do przejęcia kontroli nad procesem aplikacji lub jej awarii, co stanowi poważne ryzyko dla usług przetwarzających obrazy od niezaufanych źródeł.
Rekomendacja
Zaktualizuj Pillow do wersji 13.0.0 lub nowszej i unikaj przetwarzania niezaufanych plików PSD, MPO, DCX i MIC do czasu wdrożenia poprawki.
Inne podatności w Pillow
Zobacz wszystkie- CVE-2026-112900Krytyczne
Pillow (biblioteka obrazów Pythona) w wersjach od 2.6.0 do 13.0.0 jest podatna na wstrzyknięcie argumentów podczas wywoływania Ghostscript dla plików EPS. EpsImagePlugin.Ghostscript przekazuje nazwę pliku kontrolowaną przez wywołującego po -f bez konwersji na bezpieczną ścieżkę absolutną, więc nazwa zaczynająca się od myślnika może być interpretowana jako opcja Ghostscript.
- CVE-2026-112403Krytyczne
Pillow przed wersją 13.0.0 ma lukę w dekoderze JPEG, który może zapisać pełną linię skanowania do bufora o rozmiarze dostosowanym do żądanego skalowania. ImagingJpegDecode nie weryfikuje rzeczywistej szerokości wyjściowej libjpeg po skalowaniu, a 8-bitowy bezstratny JPEG SOF3 dekodowany przez libjpeg-turbo 3.x może zignorować żądaną geometrię zmniejszania.
- CVE-2026-112398Krytyczne
Pillow przed wersją 13.0.0 ma lukę w dekoderze kafelków JPEG FlashPix, który może zapisywać zdekodowane linie skanowania poza przydzielonym buforem kafelka. Dekodowanie FlashPix (FPX) JPEG wybiera tryb raw LA z dwoma bajtami na piksel, podczas gdy nierozpoznany tryb JPEG może być zdekodowany jako JCS_UNKNOWN z czterema komponentami, powodując zapis czterokomponentowych linii do dwubajtowego bufora kafelka.
- CVE-2026-112393Krytyczne
Biblioteka Pillow zawiera przepełnienie bufora na stercie oraz ujawnienie danych ze sterty w funkcji _tiffWriteProc podczas zapisu skompresowanych plików TIFF przez libtiff do celu bez użytecznego fileno(), np. BytesIO. Callback rozmiaruje alokację na podstawie poprzedniego rozmiaru bufora zamiast bieżącej pozycji zapisu, co pozwala na kopiowanie danych poza alokację. Podatność naprawiono w wersji 13.0.0.
- CVE-2026-54058Krytyczne
Podatność w bibliotece Pillow przed wersją 12.3.0 pozwala atakującemu na odczyt pamięci procesu lub wywołanie błędu krytycznego podczas ładowania nieskompresowanego obrazu McIdas AREA przez ścieżkę mmap. Kontrolowane przez atakującego nagłówki obrazu mogą ustawić mniejszy krok wiersza niż naturalna szerokość, co prowadzi do odczytu poza mapowanym regionem.
- CVE-2016-4009Krytyczne
Przepełnienie całkowite w funkcji ImagingResampleHorizontal w bibliotece Pillow przed wersją 3.1.1 umożliwia zdalnym atakującym wywołanie nieokreślonego wpływu poprzez użycie ujemnych wartości nowego rozmiaru, co prowadzi do przepełnienia bufora w pamięci sterty.
- CVE-2026-114501Średnie
Biblioteka Pillow w wersjach od 11.2.1 do 13.0.0 błędnie zakłada, że wiersze obrazu są ściśle przyległe podczas eksportu do formatu Arrow. Gdy PILLOW_ALIGNMENT powoduje dodanie paddingu wierszy lub przesunięcia przed pierwszym wierszem, bufor Arrow może zawierać niezainicjalizowany padding, bajty sprzed pierwszego wiersza lub pozostałości po zwolnionych obrazach. Może to prowadzić do ujawnienia pikseli innego użytkownika lub pamięci procesu.
- CVE-2026-96778Wysokie
Pillow to biblioteka obrazowania w Pythonie. Od wersji 9.4.0 do 13.0.0 funkcja ImagingJpegEncode() w src/libImaging/JpegEncode.c może wywołać jpeg_write_marker() dla komentarza JPEG COM, gdy profil ICC dokładnie wypełnił 65536-bajtowy bufor enkodera. libjpeg zapisuje jeden bajt przed sprawdzeniem wyczerpanego licznika free_in_buffer, który następnie się zawija i pozwala kontrolowanemu przez atakującego komentarzowi oraz kolejnym skompresowanym danym obrazu nadpisać sąsiednią pamięć sterty. Ponowne zapisanie niezaufanego obrazu jako JPEG z zachowaniem profilu ICC i przekazanego komentarza może spowodować awarię procesu i potencjalnie umożliwić wykonanie kodu w odpowiednich warunkach środowiska uruchomieniowego i układu sterty. Problem naprawiono w wersji 13.0.0.
- CVE-2026-96644Wysokie
Pillow to biblioteka obrazów dla Pythona. W wersjach przed 13.0.0 w systemie Windows plik src/PIL/WmfImagePlugin.py przekazuje niekontrolowane 32-bitowe wymiary WMF lub EMF do natywnego handlera drawwmf, który alokuje bufor DIB na podstawie obciętych do 16 bitów wymiarów, ale kopiuje dane pikseli przy użyciu pełnych wymiarów, umożliwiając odczyt poza buforem sterty.
- CVE-2026-96643Wysokie
W bibliotece Pillow od wersji 11.0.0 do 13.0.0 funkcja Exif.load() w src/PIL/Image.py wielokrotnie wycina pozostałe dane EXIF, dopóki zaczynają się one od sześciobajtowego nagłówka Exif. Ponieważ src/PIL/PngImagePlugin.py akceptuje nieograniczony chunk eXIf w PNG, plik wypełniony powtarzającymi się nagłówkami powoduje tworzenie nowej zmniejszającej się kopii w każdej iteracji i kwadratowe zużycie CPU. Problem jest osiągalny przez Image.getexif(), Image._getexif() i ImageOps.exif_transpose(), w tym w typowych procesach obracania zdjęć przy uploadzie. Podatność naprawiono w wersji 13.0.0.
Oryginalny opis (angielski, źródło NVD)
Pillow is a Python imaging library. From 11.0.0 until 13.0.0, multi-frame loaders can retain an ImagingCore allocation created for a narrow frame mode while a later frame of the same dimensions changes the logical mode and decoder tiles to wider RGB or CMYK data. ImageFile.load_prepare() reuses the stale native storage because _im is non-null without verifying that its mode and size still match. Crafted PSD, MPO, DCX, or MIC frame transitions can then write wider pixels into the narrow allocation, causing native out-of-bounds writes and crashes. The MPO path can also cause a native over-read and, in demonstrated runtime-specific profiles, command execution. This issue is fixed in version 13.0.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

