Pillow: Speicherzugriff außerhalb der Grenzen in _imagingmorph bei Bildern mit Breite null
Zusammenfassung
Eine PPM- oder PGM-Datei kann eine Breite von 0 deklarieren, die von Pillow akzeptiert wird und ein Bild der Größe (0, N) erzeugt. Wird dieses Bild an ImageMorph.MorphOp.apply() übergeben, indiziert der native Morphologie-Code einen Zeilenpuffer bei outrow[width - 1], was bei einer Breite von 0 dem Index outrow[-1] entspricht. Dies führt zum Absturz des Prozesses.
Details
Der PPM-Parser liest Breite und Höhe ohne Prüfung einer unteren Bereichsgrenze aus:
src/PIL/PpmImagePlugin.py:119
Die native Funktion apply() schreibt die Zeilenränder, ohne abzusichern, dass die Breite positiv ist:
src/_imagingmorph.c:81setztoutrow[0] = outrow[width - 1] = 0;
match() und get_on_pixels() verwenden dasselbe Muster zur Randindizierung.
PoC
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)
Ausführung:
$ python 03_poc.py
Segmentation fault (core dumped)
Beobachtet bei einem Build aus den Quelldateien von Commit 3e2ab96.
Unter 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
Bei einer Breite von 0 trifft der Schreibvorgang an Position outrow[width - 1] auf eine nicht zugeordnete Speicherseite, sodass er sich als SEGV an der Zeile des Randschreibvorgangs und nicht als Redzone-Überlauf manifestiert.
Auswirkungen
Schreibzugriff außerhalb der Grenzen in einer C-Erweiterung. Betroffen ist jede Anwendung, die eine Morphologie-Operation auf einem Bild aus nicht vertrauenswürdiger Quelle ausführt. Die Folge ist ein Absturz und mögliche Speicherkorruption.
Was zu tun ist
Aktualisieren Sie das Paket pillow auf Version 13.0.0 oder höher.
Betroffene Software
Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.
| Plattform | Paket | Anfällige Versionen | Behoben in |
|---|---|---|---|
| Python (PyPI) | pillow | < 13.0.0 | 13.0.0 |
Verweise
- https://github.com/python-pillow/Pillow/security/advisories/GHSA-58r4-6rv3-gfh8
- https://nvd.nist.gov/vuln/detail/CVE-2026-112397
- https://github.com/python-pillow/Pillow/commit/18f7c0dfee93063c51db6ed0ca8c4da2999dcb64
- https://github.com/python-pillow/Pillow
- https://github.com/python-pillow/Pillow/releases/tag/13.0.0
- CVSS-Vektor
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- Schwäche (CWE)
CWE-787- Plattform
- Python (PyPI)
- Paket
pillow- Veröffentlicht
- 20.10.2026
- Aktualisiert
- 20.10.2026 23:29
Quellen und Lizenzen · Von DockRay bearbeitet oder übersetzt; Rechte und Lizenzen der Quellen bleiben erhalten.
OSV / GitHub Advisory Database - GHSA-58r4-6rv3-gfh8 - CC BY 4.0
Schwachstellenhistorie: pillow
Alle veröffentlichten Schwachstellen dieses Pakets (Python (PyPI)), neueste zuerst. Zeigt, ob es ein einmaliger Ausrutscher ist oder ein Paket, das man im Auge behalten muss.
- Einträge insgesamt
- 81
- Erste → letzte
- 04.2014 10.2026
- Ohne Fix
- 0
- In Angriffen ausgenutzt
- 1
Verteilung nach Schweregrad
- Kritisch 10
- Hoch 53
- Mittel 16
- Niedrig 1
- Nicht bewertet 1
Veröffentlichungen pro Jahr
- 2017: 1
- 2018: 0
- 2019: 1
- 2020: 10
- 2021: 20
- 2022: 8
- 2023: 3
- 2024: 2
- 2025: 1
- 2026: 23
früher: 12
-
Pillow: Speicherzugriff außerhalb der Grenzen in _imagingmorph bei Bildern mit Breite null dieser Eintrag
Erkennen Sie Schwachstellen in Ihrer Anwendung
Mit der DockRay-Integration und aktivierter Softwareinventarisierung prüft DockRay gemeldete Komponentenversionen auf bekannte Schwachstellen und benachrichtigt Sie über bestätigte Treffer. Die Abdeckung hängt von der unterstützten Technologie und den verfügbaren Meldungen ab.