Wysoka

Pillow: Dostęp poza granicami bufora w _imagingmorph przy obrazie o zerowej szerokości

  • Ujawniono: 20.10.2026
  • Aktualizacja: 20.10.2026 23:29

Podsumowanie

Plik PPM lub PGM może zadeklarować szerokość równą 0, co jest akceptowane przez bibliotekę Pillow i prowadzi do wygenerowania obrazu o rozmiarze (0, N). Przekazanie tego obrazu do ImageMorph.MorphOp.apply() powoduje, że natywny kod morfologii odwołuje się do bufora wiersza pod indeksem outrow[width - 1], który wynosi outrow[-1], gdy szerokość to 0. W rezultacie proces ulega awarii.

Szczegóły

Parser PPM odczytuje szerokość i wysokość bez sprawdzania dolnej granicy:

  • src/PIL/PpmImagePlugin.py:119

Natywna funkcja apply() zapisuje krawędzie wierszy bez zabezpieczenia weryfikującego, czy szerokość jest dodatnia:

  • src/_imagingmorph.c:81 ustawia outrow[0] = outrow[width - 1] = 0;

match() oraz get_on_pixels() korzystają z tego samego wzorca indeksowania krawędzi.

PoC

python
from PIL import Image, ImageMorph

# A width-0 image (also producible from a crafted PPM header). apply() indexes
# outrow[width - 1] == outrow[-1] in native code.
im = Image.new("L", (0, 5))
ImageMorph.MorphOp(op_name="dilation4").apply(im)

Uruchomienie:

bash
$ python 03_poc.py
Segmentation fault (core dumped)

Zaobserwowano na kompilacji ze źródeł commita 3e2ab96.

Pod AddressSanitizer:

==ERROR: AddressSanitizer: SEGV on unknown address (pc ... in apply)
    #0 apply   src/_imagingmorph.c:81
SUMMARY: AddressSanitizer: SEGV src/_imagingmorph.c:81 in apply

Przy szerokości 0 zapis pod adresem outrow[width - 1] trafia na niezmapowaną stronę pamięci, przez co objawia się jako błąd SEGV przypisany do linii zapisu krawędzi, a nie jako przepełnienie strefy ochronnej (redzone).

Wpływ

Zapis poza granicami bufora w rozszerzeniu C. Dotyczy każdej aplikacji wykonującej operacje morfologii na obrazach otwartych z niezaufanych źródeł. Skutkiem jest awaria procesu oraz możliwe uszkodzenie pamięci.

Co trzeba zrobić

Zaktualizuj pakiet pillow do wersji 13.0.0 lub nowszej.

Czego dotyczy

Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.

PlatformaPaczkaPodatne wersjePoprawka w wersji
Python (PyPI) pillow < 13.0.0 13.0.0

Odnośniki

Ocena CVSS -
Wektor CVSS
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Słabość (CWE)
CWE-787
Platforma
Python (PyPI)
Paczka
pillow
Ujawniono
20.10.2026
Aktualizacja
20.10.2026 23:29

Źródła i licencje · Redakcja lub tłumaczenie: DockRay. Zachowano prawa źródeł i obowiązujące licencje.

OSV / GitHub Advisory Database - GHSA-58r4-6rv3-gfh8 - CC BY 4.0

Historia podatności: pillow

Wszystkie opisane podatności tej paczki (Python (PyPI)), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.

Wszystkie (81) w archiwum
Wszystkich wpisów
81
Pierwsza → ostatnia
04.2014 10.2026
Bez poprawki
0
Wykorzystywana w atakach
1

Rozkład istotności

  • Krytyczna 10
  • Wysoka 53
  • Średnia 16
  • Niska 1
  • Nieoceniona 1

Ujawnienia w latach

  1. 2017: 1
  2. 2018: 0
  3. 2019: 1
  4. 2020: 10
  5. 2021: 20
  6. 2022: 8
  7. 2023: 3
  8. 2024: 2
  9. 2025: 1
  10. 2026: 23

wcześniej: 12

Istotność:
  1. Pillow: Dostęp poza granicami bufora w _imagingmorph przy obrazie o zerowej szerokości ten wpis
    Wysoka CVE-2026-112397 < 13.0.0 13.0.0
  2. Wysoka · 7.5 CVE-2026-59200 >= 5.1.0, < 12.3.0 12.3.0
  3. Wysoka CVE-2026-42311 >= 10.3.0, < 12.2.0 12.2.0
  4. Wysoka · 7.5 CVE-2026-40192 >= 10.3.0, < 12.2.0 12.2.0
  5. Wysoka CVE-2026-25990 >= 10.3.0, < 12.1.1 12.1.1
  6. Wysoka · 7.1 CVE-2025-48379 >= 11.2.0, < 11.3.0 11.3.0
  7. Wysoka · 6.7 CVE-2024-28219 < 10.3.0 10.3.0
  8. Krytyczna · 8.1 CVE-2023-50447 < 10.2.0 10.2.0
Pokaż więcej (20) Widać 20 z 63

Dowiedz się, które podatności dotyczą Twojej aplikacji

Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.

Podłącz swoją aplikację
Newsletter DockRay

Bezpieczeństwo aplikacji w Twojej skrzynce

Najważniejsze podatności, konkretne zalecenia i praktyczne wskazówki dla Twoich aplikacji. Wybierz technologie i śledź to, co ma znaczenie dla Twojego projektu.

  • Codzienne zestawienie nowych podatności, także krytycznych.
  • Powiadomienia o ważnych aktualizacjach.
  • Praktyczne porady o bezpieczeństwie i monitoringu aplikacji.

Pozostaw puste, aby otrzymywać informacje o wszystkich technologiach.

Zapis jest bezpłatny. Wypiszesz się jednym kliknięciem w wiadomości.