Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-5201 — CVE-2026-5201: Heap-based buffer overflow in gdk-pixbuf JPEG loader (CWE-122, CVSS 7.5) | Kitploit
Outils/GitHubGitHub/kagancapar/cve-2026-5201
Memory ForensicsVulnerability AnalysisExploitationBinary AnalysisPapers & ResearchLearning & Education
GitHubkagancapar/cve-2026-5201

CVE-2026-5201

CVE-2026-5201: Heap-based buffer overflow in gdk-pixbuf JPEG loader (CWE-122, CVSS 7.5)

Voir le dépôt
134il y a 9 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-5201

Débordement de tampon basé sur le tas dans le chargeur JPEG de gdk-pixbuf

Bonjour, je suis Kağan Çapar. J'ai découvert une vulnérabilité de débordement de tampon basé sur le tas dans le chargeur d'images JPEG de gdk-pixbuf qui affecte pratiquement tous les environnements de bureau Linux. La vulnérabilité a été attribuée CVE-2026-5201 et reconnue par Red Hat avec un score CVSS de 7.5 (Important).

Ce dépôt contient mon analyse complète, un reproducteur que j'ai écrit de zéro, et les preuves de crash provenant d'un système Ubuntu 24.04 LTS en fonctionnement.

CVECVE-2026-5201
CWECWE-122 — Débordement de tampon basé sur le tas
CVSS v37.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H)
Affectégdk-pixbuf (toutes les versions avant le correctif)
FournisseurGNOME
Correctifgdk-pixbuf@6cce931
SuiviGNOME #304
BugzillaRed Hat #2453291

Résumé

J'ai trouvé un débordement de tampon basé sur le tas dans le chargeur d'images JPEG de gdk-pixbuf (io-jpeg.c). Le chemin de chargement direct de fichier (gdk_pixbuf__jpeg_image_load) ne valide pas le nombre de composantes de couleur avant d'allouer un tampon de pixels. Un fichier JPEG spécialement conçu de 122 octets avec 9 composantes déclarées dans l'en-tête SOF mais seulement 3 analysées dans SOS amène gdk-pixbuf à allouer un tampon pour 3 canaux tandis que libjpeg écrit 9 canaux par pixel — résultant en un débordement de tas allant jusqu'à ~49 Ko de données contrôlées par l'attaquant.

Le chemin de chargeur incrémental avait déjà cette validation exacte, mais elle manquait dans le chemin de chargement direct.

Impact

  • Déni de service : crash fiable à 100% sur toute application utilisant gdk_pixbuf_new_from_file()
  • Corruption du tas : pointeur de table virtuelle GObject (g_class) écrasé avec des données de pixels
  • Exécution de code : démontrée sur Linux 32 bits via le détournement de table virtuelle
  • Systèmes affectés : tous les bureaux Linux — Ubuntu, Fedora, Debian, Arch, RHEL 7–10

Produits Red Hat affectés

Cause racine

Dans gdk-pixbuf/io-jpeg.c, la fonction gdk_pixbuf__jpeg_image_load() :

1. Allocation insuffisante (ligne 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. Écriture excessive (ligne 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. Validation manquante — le chargeur incrémental vérifie déjà output_components à la ligne 1142, mais cette vérification était absente du chemin direct.

Reproduction

Générer le reproducteur

root@kitploit:~
python3 reproducer/craft_cve_2026_5201.py

Ceci crée un fichier JPEG de 122 octets avec 9 composantes dans l'en-tête SOF10 et seulement 3 analysées dans SOS.

Déclencher le crash

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

# Exécuter
./crash_test cve_2026_5201.jpg

Sortie attendue (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

Sortie GDB (sans 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

Correctif

Le correctif ajoute la même validation output_components qui existait déjà dans le chargeur incrémental :

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

Appliqué dans gdk-pixbuf@6cce931.

Environnement testé

Système d’exploitationUbuntu 24.04.1 LTS
gdk-pixbuf2.42.10+dfsg-3ubuntu3.2
libjpeglibjpeg-turbo 2.1.5 (libjpeg.so.8.2.2)
GCC13.3.0

Références

  • 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

Précédent historique

CVE-2017-2862 (Cisco Talos TALOS-2017-0366) — CVSS 8.8 — même classe de bogue de décalage de tampon null_convert dans gdk-pixbuf, classé comme exécution de code à distance.

Crédits

Kağan Çapar — GitHub · LinkedIn · X

Reconnu par Red Hat dans l'avis CVE-2026-5201.

Télécharger l’outil
ProduitComposantStatut
Red Hat Enterprise Linux 10gdk-pixbuf2Affecté
Red Hat Enterprise Linux 10loupeAffecté
Red Hat Enterprise Linux 10snapshotAffecté
Red Hat Enterprise Linux 9gdk-pixbuf2Affecté
Red Hat Enterprise Linux 8gdk-pixbuf2Affecté
Red Hat Enterprise Linux 7gdk-pixbuf2Affecté