Hoch

Pillow: NULL-Zeiger-Dereferenzierung in Image.merge durch ein ungeprüftes Band 0

  • Veröffentlicht: 21.10.2026
  • Aktualisiert: 22.10.2026 00:04

Zusammenfassung

Image.merge() prüft den Modus jedes Eingabebandes mit Ausnahme von Band 0. Wenn Band 0 ein Einzelband-I- oder -F-Bild ist, liest die native Merge-Routine einen Pixel-Zeiger, der für diese Modi NULL ist, was zum Absturz des Prozesses führt. Das IPTC-Plugin erreicht diesen Pfad über ein einfaches Image.open(), gefolgt von einem Ladevorgang. Da IPTC über keinen Magic-Byte-Vorfilter verfügt, kann eine manipulierte Datei ohne erkennbaren Header dies auslösen.

Details

Die Validierungsschleife überspringt Band 0:

  • src/PIL/Image.py:3795 iteriert über for band in bands[1:] und überprüft Modus sowie Größe ausschließlich für diese.

Für ein I- oder F-Bild ist die 8-Bit-Ebene image8 NULL (nur image32 ist gesetzt). ImagingMerge dereferenziert bands[0]->image8[y] für die Mehrband-Ausgabemodi:

  • src/libImaging/Bands.c:302, :311, :321

Der IPTC-Loader erstellt die Bandliste aus einem vom Angreifer definierten Teilbild und übergibt sie an merge mit dem Teilbild bei Index 0:

  • src/PIL/IptcImagePlugin.py:156-160
  • src/PIL/IptcImagePlugin.py:169 registriert den Opener ohne accept-Funktion.

PoC

python
from PIL import Image

# Band 0 is a single-band "I" image: its image8 plane is NULL. merge() validates only
# bands[1:], so the native ImagingMerge dereferences the NULL plane for band 0.
band0 = Image.new("I", (4, 4))
Image.merge("RGB", [band0, Image.new("L", (4, 4)), Image.new("L", (4, 4))])

Ausführung:

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

Beobachtet bei einem Quell-Build des Commits 3e2ab96.

Unter AddressSanitizer:

==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000
    #0 ImagingMerge   src/libImaging/Bands.c:311
    #1 _merge         src/_imaging.c:2492
SUMMARY: AddressSanitizer: SEGV src/libImaging/Bands.c:311 in ImagingMerge

Die Null-Adresse bestätigt die Dereferenzierung der fehlenden image8-Ebene für Band 0.

Auswirkungen

NULL-Zeiger-Dereferenzierung in einer C-Erweiterung. Eine manipulierte Datei, die über den IPTC-Pfad geöffnet und geladen wird, bringt den Worker-Prozess zum Absturz. Hierbei handelt es sich um einen harten Absturz und nicht um eine Python-Exception, die von einer Anwendung abgefangen werden kann.

Was zu tun ist

Aktualisieren Sie Pillow auf Version 13.0.0 oder höher.

Betroffene Software

Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.

PlattformPaketAnfällige VersionenBehoben in
Python (PyPI) pillow >= 12.0.0, < 13.0.0 13.0.0

Verweise

CVSS-Wert -
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-476
Plattform
Python (PyPI)
Paket
pillow
Veröffentlicht
21.10.2026
Aktualisiert
22.10.2026 00:04

Quellen und Lizenzen · Von DockRay bearbeitet oder übersetzt; Rechte und Lizenzen der Quellen bleiben erhalten.

OSV / GitHub Advisory Database - GHSA-cp9v-662q-vvx9 - 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.

Alle (89) im Archiv
Einträge insgesamt
89
Erste → letzte
04.2014 10.2026
Ohne Fix
0
In Angriffen ausgenutzt
1

Verteilung nach Schweregrad

  • Kritisch 12
  • Hoch 57
  • Mittel 18
  • Niedrig 1
  • Nicht bewertet 1

Veröffentlichungen pro Jahr

  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: 31

früher: 12

Schweregrad:
  1. Hoch CVE-2026-112390 >= 7.2.0, < 13.0.0 13.0.0
  2. Pillow: NULL-Zeiger-Dereferenzierung in Image.merge durch ein ungeprüftes Band 0 dieser Eintrag
    Hoch CVE-2026-112405 >= 12.0.0, < 13.0.0 13.0.0
  3. Kritisch CVE-2026-112900 >= 2.6.0, < 13.0.0 13.0.0
  4. Kritisch CVE-2026-112403 < 13.0.0 13.0.0
  5. Hoch · 7.5 CVE-2026-59200 >= 5.1.0, < 12.3.0 12.3.0
  6. Hoch CVE-2026-42311 >= 10.3.0, < 12.2.0 12.2.0
Mehr anzeigen (20) 20 von 69 angezeigt

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.

Anwendung verbinden
DockRay Newsletter

Anwendungssicherheit in Ihrem Postfach

Wichtige Schwachstellen, konkrete Empfehlungen und praktische Tipps für Ihre Anwendungen. Wählen Sie Ihre Technologien und verfolgen Sie, was für Ihr Projekt relevant ist.

  • Eine tägliche Zusammenfassung neuer Schwachstellen, auch kritischer.
  • Benachrichtigungen über wichtige Updates.
  • Praktische Tipps zur Sicherheit und Überwachung von Anwendungen.

Leer lassen, um Meldungen zu allen Technologien zu erhalten.

Kostenlos anmelden. In jeder E-Mail mit einem Klick abmelden.