Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-5201 — CVE-2026-5201: Heap-basierter Pufferüberlauf im gdk-pixbuf JPEG-Loader (CWE-122, CVSS 7.5) | Kitploit
Tools/GitHubGitHub/kagancapar/cve-2026-5201
SpeicherforensikSchwachstellenanalyseExploitationBinäranalysePapers & ForschungLernen & Bildung
GitHubkagancapar/cve-2026-5201

CVE-2026-5201

CVE-2026-5201: Heap-basierter Pufferüberlauf im gdk-pixbuf JPEG-Loader (CWE-122, CVSS 7.5)

Repository anzeigen
134vor 9 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-5201

Heap-basierter Pufferüberlauf im gdk-pixbuf-JPEG-Loader

Hallo, ich bin Kağan Çapar. Ich habe eine Heap-basierte Pufferüberlauf-Schwachstelle im JPEG-Bildlader von gdk-pixbuf entdeckt, die praktisch alle Linux-Desktop-Umgebungen betrifft. Der Schwachstelle wurde CVE-2026-5201 zugewiesen und von Red Hat mit einem CVSS-Score von 7.5 (Wichtig) bestätigt.

Dieses Repository enthält meine vollständige Analyse, einen von Grund auf neu geschriebenen Reproduzierer und den Absturznachweis von einem Live-System mit Ubuntu 24.04 LTS.

CVECVE-2026-5201
CWECWE-122 — Heap-basierter Pufferüberlauf
CVSS v37.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H)
Betroffengdk-pixbuf (alle Versionen vor der Behebung)
HerstellerGNOME
Behebunggdk-pixbuf@6cce931
TrackerGNOME #304
BugzillaRed Hat #2453291

Zusammenfassung

Ich habe einen Heap-basierten Pufferüberlauf im JPEG-Bildlader (io-jpeg.c) von gdk-pixbuf gefunden. Der direkte Dateiladepfad (gdk_pixbuf__jpeg_image_load) validiert die Anzahl der Farbkomponenten nicht, bevor ein Pixelpuffer zugewiesen wird. Ein speziell präpariertes 122-Byte-JPEG mit 9 im SOF-Header deklarierten Komponenten, aber nur 3 in SOS gescannten Komponenten veranlasst gdk-pixbuf, einen Puffer für 3 Kanäle zu allokieren, während libjpeg 9 Kanäle pro Pixel schreibt – was zu einem Heap-Überlauf von bis zu ~49 KB angreiferkontrollierten Daten führt.

Der inkrementelle Laderpfad enthielt diese exakte Validierung bereits, aber sie fehlte im direkten Ladepfad.

Auswirkungen

  • Denial of Service: 100 % zuverlässiger Absturz in jeder Anwendung, die gdk_pixbuf_new_from_file() verwendet
  • Heap-Korruption: GObject-vtable-Zeiger (g_class) wird mit Pixeldaten überschrieben
  • Codeausführung: Auf 32-Bit-Linux per vtable-Hijacking demonstriert
  • Betroffene Systeme: Alle Linux-Desktops — Ubuntu, Fedora, Debian, Arch, RHEL 7–10

Betroffene Red-Hat-Produkte

Grundursache

In gdk-pixbuf/io-jpeg.c, der Funktion gdk_pixbuf__jpeg_image_load():

1. Zu kleine Speicherzuweisung (Zeile 633):

root@kitploit:~
pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB,
                        cinfo->out_color_components == 4 ? TRUE : FALSE,
                        8, cinfo->output_width, cinfo->output_height);

2. Zu große Schreiboperation (Zeile 696):

root@kitploit:~
jpeg_read_scanlines(cinfo, lines, cinfo->rec_outbuf_height);
// writes output_components (9) bytes per pixel into a 3-byte buffer

3. Fehlende Validierung — Der inkrementelle Lader prüft output_components bereits in Zeile 1142, aber diese Prüfung fehlte im direkten Pfad.

Reproduktion

Reproduzierer erzeugen

root@kitploit:~
python3 reproducer/craft_cve_2026_5201.py

Dies erzeugt eine 122-Byte-JPEG-Datei mit 9 Komponenten im SOF10-Header und nur 3 in SOS gescannten Komponenten.

Absturz auslösen

root@kitploit:~
# Compile
gcc -o crash_test reproducer/crash_test.c \
    $(pkg-config --cflags --libs gdk-pixbuf-2.0) -fsanitize=address -g

# Run
./crash_test cve_2026_5201.jpg

Erwartete Ausgabe (AddressSanitizer)

root@kitploit:~
==PID==ERROR: AddressSanitizer: SEGV on unknown address 0x52b000020006
==PID==The signal is caused by a WRITE memory access.
    #0  libjpeg.so.8  (null_convert)
    #1  libjpeg.so.8  (sep_upsample)
    #2  libjpeg.so.8  (process_data_context_main)
    #3  libjpeg.so.8  jpeg_read_scanlines
    #4  libgdk_pixbuf-2.0.so.0  (JPEG loader)
    #5  libgdk_pixbuf-2.0.so.0  gdk_pixbuf_new_from_file

GDB-Ausgabe (ohne ASAN)

root@kitploit:~
Program received signal SIGSEGV, Segmentation fault.
g_type_check_instance_is_fundamentally_a ()
  → g_object_unref()
  → gdk_pixbuf_new_from_file()

rax = 0x808080808080ffff    ← corrupted GObject vtable pointer

Behebung

Die Behebung fügt dieselbe output_components-Validierung hinzu, die bereits im inkrementellen Lader vorhanden ist:

root@kitploit:~
jpeg_start_decompress(cinfo);

if (cinfo->output_components != 3 && cinfo->output_components != 4 &&
    !(cinfo->output_components == 1 &&
      cinfo->out_color_space == JCS_GRAYSCALE)) {
    g_set_error(error, GDK_PIXBUF_ERROR, GDK_PIXBUF_ERROR_CORRUPT_IMAGE,
                "Unsupported number of color components (%d)",
                cinfo->output_components);
    goto out;
}

Umgesetzt in gdk-pixbuf@6cce931.

Getestete Umgebung

BetriebssystemUbuntu 24.04.1 LTS
gdk-pixbuf2.42.10+dfsg-3ubuntu3.2
libjpeglibjpeg-turbo 2.1.5 (libjpeg.so.8.2.2)
GCC13.3.0

Referenzen

  • https://www.cve.org/CVERecord?id=CVE-2026-5201
  • https://nvd.nist.gov/vuln/detail/CVE-2026-5201
  • https://gitlab.gnome.org/GNOME/gdk-pixbuf/-/issues/304
  • https://access.redhat.com/security/cve/CVE-2026-5201
  • https://bugzilla.redhat.com/show_bug.cgi?id=2453291

Historischer Präzedenzfall

CVE-2017-2862 (Cisco Talos TALOS-2017-0366) — CVSS 8.8 — dieselbe null_convert-Puffer-Mismatch-Fehlerklasse in gdk-pixbuf, eingestuft als Remote Code Execution.

Danksagung

Kağan Çapar — GitHub · LinkedIn · X

Von Red Hat im CVE-2026-5201-Advisory bestätigt.

Tool herunterladen
ProduktKomponenteStatus
Red Hat Enterprise Linux 10gdk-pixbuf2Betroffen
Red Hat Enterprise Linux 10loupeBetroffen
Red Hat Enterprise Linux 10snapshotBetroffen
Red Hat Enterprise Linux 9gdk-pixbuf2Betroffen
Red Hat Enterprise Linux 8gdk-pixbuf2Betroffen
Red Hat Enterprise Linux 7gdk-pixbuf2Betroffen