Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-5201 — CVE-2026-5201: Desbordamiento de búfer basado en montón en el cargador JPEG de gdk-pixbuf (CWE-122, CVSS 7.5) | Kitploit
Herramientas/GitHubGitHub/kagancapar/cve-2026-5201
Forensia de MemoriaAnálisis de VulnerabilidadesExplotaciónAnálisis de BinariosPapers e InvestigaciónAprendizaje y Educación
GitHubkagancapar/cve-2026-5201

CVE-2026-5201

CVE-2026-5201: Desbordamiento de búfer basado en montón en el cargador JPEG de gdk-pixbuf (CWE-122, CVSS 7.5)

Ver Repositorio
13415hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-5201

Desbordamiento de búfer basado en montón en el cargador JPEG de gdk-pixbuf

Hola, soy Kağan Çapar. He descubierto una vulnerabilidad de desbordamiento de búfer basado en montón en el cargador de imágenes JPEG de gdk-pixbuf que afecta prácticamente a todos los entornos de escritorio de Linux. A la vulnerabilidad se le asignó el identificador CVE-2026-5201 y fue reconocida por Red Hat con una puntuación CVSS de 7.5 (Importante).

Este repositorio contiene mi análisis completo, un reproducer que escribí desde cero y la evidencia del fallo en un sistema Ubuntu 24.04 LTS en vivo.

CVECVE-2026-5201
CWECWE-122 — Desbordamiento de búfer basado en montón
CVSS v37.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H)
Afectadogdk-pixbuf (todas las versiones anteriores a la corrección)
ProveedorGNOME
Correccióngdk-pixbuf@6cce931
SeguimientoGNOME #304
BugzillaRed Hat #2453291

Resumen

Encontré un desbordamiento de búfer basado en montón en el cargador de imágenes JPEG de gdk-pixbuf (io-jpeg.c). La ruta de carga directa de archivos (gdk_pixbuf__jpeg_image_load) no valida el número de componentes de color antes de asignar el búfer de píxeles. Un JPEG de 122 bytes especialmente manipulado, con 9 componentes declarados en la cabecera SOF pero solo 3 escaneados en SOS, provoca que gdk-pixbuf asigne un búfer para 3 canales mientras libjpeg escribe 9 canales por píxel, lo que resulta en un desbordamiento de montón de hasta ~49 KB de datos controlados por el atacante.

La ruta del cargador incremental ya contaba con esta validación exacta, pero faltaba en la ruta de carga directa.

Impacto

  • Denegación de servicio: fallo 100 % fiable en cualquier aplicación que use gdk_pixbuf_new_from_file()
  • Corrupción del montón: el puntero a la vtable de GObject (g_class) se sobrescribe con datos de píxeles
  • Ejecución de código: demostrada en Linux de 32 bits mediante secuestro de vtable
  • Sistemas afectados: todos los escritorios Linux — Ubuntu, Fedora, Debian, Arch, RHEL 7–10

Productos Red Hat afectados

Causa raíz

En gdk-pixbuf/io-jpeg.c, la función gdk_pixbuf__jpeg_image_load():

1. Asignación de tamaño insuficiente (línea 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. Escritura de tamaño excesivo (línea 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. Validación ausente — el cargador incremental ya comprueba output_components en la línea 1142, pero esta comprobación no estaba presente en la ruta directa.

Reproducción

Generar el reproducer

root@kitploit:~
python3 reproducer/craft_cve_2026_5201.py

Esto crea un archivo JPEG de 122 bytes con 9 componentes en la cabecera SOF10 y solo 3 escaneados en SOS.

Desencadenar el fallo

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

Salida esperada (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

Salida de GDB (sin 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

Corrección

La corrección añade la misma validación de output_components que ya existía en el cargador incremental:

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

Aplicada en gdk-pixbuf@6cce931.

Entorno de pruebas

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

Referencias

  • 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 histórico

CVE-2017-2862 (Cisco Talos TALOS-2017-0366) — CVSS 8.8 — misma clase de bug de desajuste de búfer null_convert en gdk-pixbuf, clasificada como Ejecución Remota de Código.

Créditos

Kağan Çapar — GitHub · LinkedIn · X

Reconocido por Red Hat en el aviso CVE-2026-5201.

Descargar herramienta
ProductoComponenteEstado
Red Hat Enterprise Linux 10gdk-pixbuf2Afectado
Red Hat Enterprise Linux 10loupeAfectado
Red Hat Enterprise Linux 10snapshotAfectado
Red Hat Enterprise Linux 9gdk-pixbuf2Afectado
Red Hat Enterprise Linux 8gdk-pixbuf2Afectado
Red Hat Enterprise Linux 7gdk-pixbuf2Afectado