CVE-2026-96778
WysokieCVSS 7.7Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 33 - wyżej niż 33% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Przetwarzanie niezaufanych obrazów może prowadzić do awarii aplikacji lub potencjalnego zdalnego wykonania kodu. Może to skutkować przejęciem kontroli nad systemem i naruszeniem poufności danych.
Rekomendacja
Należy zaktualizować bibliotekę Pillow do wersji 13.0.0 lub nowszej. Do czasu aktualizacji zaleca się unikanie ponownego zapisywania niezaufanych obrazów jako JPEG z zachowaniem profilu ICC i komentarzy.
Inne podatności w Pillow
Zobacz wszystkie- CVE-2026-96639Krytyczne
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.
- 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-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 9.4.0 until 13.0.0, ImagingJpegEncode() in src/libImaging/JpegEncode.c can call jpeg_write_marker() for a JPEG COM comment when an ICC profile has exactly filled the 65536-byte encoder buffer. libjpeg writes one byte before checking the exhausted free_in_buffer counter, which then wraps and permits the attacker-controlled comment and subsequent compressed image data to overwrite adjacent heap memory. Re-saving an untrusted image as JPEG while preserving its ICC profile and forwarded comment can crash the process and may enable code execution in suitable runtime and heap layouts. This issue is fixed in version 13.0.0.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

