Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-5201 — CVE-2026-5201: Overflow del buffer basato su heap nel caricatore JPEG di gdk-pixbuf (CWE-122, CVSS 7.5) | Kitploit
Strumenti/GitHubGitHub/kagancapar/cve-2026-5201
Memory ForensicsAnalisi delle VulnerabilitàExploitAnalisi di BinariPaper e RicercaApprendimento e Formazione
GitHubkagancapar/cve-2026-5201

CVE-2026-5201

CVE-2026-5201: Overflow del buffer basato su heap nel caricatore JPEG di gdk-pixbuf (CWE-122, CVSS 7.5)

Vedi Repository
134151 mese faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-5201

Overflow del buffer basato su heap nel caricatore JPEG di gdk-pixbuf

Ciao, sono Kağan Çapar. Ho scoperto una vulnerabilità di overflow del buffer basato su heap nel caricatore di immagini JPEG di gdk-pixbuf che colpisce praticamente tutti gli ambienti desktop Linux. Alla vulnerabilità è stato assegnato l'identificativo CVE-2026-5201 ed è stata riconosciuta da Red Hat con un punteggio CVSS di 7.5 (Importante).

Questo repository contiene la mia analisi completa, un reproducer che ho scritto da zero e le prove del crash su un sistema Ubuntu 24.04 LTS reale.

CVECVE-2026-5201
CWECWE-122 — Buffer overflow basato su heap
CVSS v37.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H)
Versioni interessategdk-pixbuf (tutte le versioni precedenti alla correzione)
FornitoreGNOME
Correzionegdk-pixbuf@6cce931
TrackerGNOME #304
BugzillaRed Hat #2453291

Sommario

Ho trovato un overflow del buffer basato su heap nel caricatore di immagini JPEG di gdk-pixbuf (io-jpeg.c). Il percorso di caricamento diretto dei file (gdk_pixbuf__jpeg_image_load) non valida il numero di componenti di colore prima di allocare un buffer per i pixel. Un JPEG appositamente creato di 122 byte, con 9 componenti dichiarate nell'header SOF ma solo 3 scansionate in SOS, induce gdk-pixbuf ad allocare un buffer per 3 canali mentre libjpeg scrive 9 canali per pixel — causando un overflow dell'heap fino a ~49 KB di dati controllati dall'attaccante.

Il percorso del loader incrementale aveva già esattamente questa validazione, ma mancava nel percorso di caricamento diretto.

Impatto

  • Negazione del servizio: crash affidabile al 100% su qualsiasi applicazione che utilizza gdk_pixbuf_new_from_file()
  • Corruzione dell'heap: il puntatore alla vtable di GObject (g_class) viene sovrascritto con dati dei pixel
  • Esecuzione di codice: dimostrata su Linux a 32 bit tramite dirottamento della vtable
  • Sistemi interessati: tutti i desktop Linux — Ubuntu, Fedora, Debian, Arch, RHEL 7–10

Prodotti Red Hat interessati

Causa principale

In gdk-pixbuf/io-jpeg.c, la funzione gdk_pixbuf__jpeg_image_load():

1. Allocazione insufficiente (riga 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. Scrittura eccessiva (riga 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. Validazione mancante — il loader incrementale controlla già output_components alla riga 1142, ma questo controllo era assente nel percorso diretto.

Riproduzione

Genera il reproducer

root@kitploit:~
python3 reproducer/craft_cve_2026_5201.py

Questo crea un file JPEG di 122 byte con 9 componenti nell'header SOF10 e solo 3 scansionate in SOS.

Innesca il crash

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

Output atteso (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

Output GDB (senza 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

Correzione

La correzione aggiunge la stessa validazione di output_components che esiste già nel loader incrementale:

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;
}

Applicata in gdk-pixbuf@6cce931.

Ambiente di test

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

Riferimenti

  • 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

Precedente storico

CVE-2017-2862 (Cisco Talos TALOS-2017-0366) — CVSS 8.8 — stessa classe di bug di mancata corrispondenza del buffer in null_convert in gdk-pixbuf, classificata come Remote Code Execution.

Crediti

Kağan Çapar — GitHub · LinkedIn · X

Riconosciuto da Red Hat nell'advisory CVE-2026-5201.

Scarica lo strumento
ProdottoComponenteStato
Red Hat Enterprise Linux 10gdk-pixbuf2Interessato
Red Hat Enterprise Linux 10loupeInteressato
Red Hat Enterprise Linux 10snapshotInteressato
Red Hat Enterprise Linux 9gdk-pixbuf2Interessato
Red Hat Enterprise Linux 8gdk-pixbuf2Interessato
Red Hat Enterprise Linux 7gdk-pixbuf2Interessato