Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-5201 — CVE-2026-5201: Estouro de buffer baseado em heap no carregador de JPEG do gdk-pixbuf (CWE-122, CVSS 7.5) | Kitploit
Ferramentas/GitHubGitHub/kagancapar/cve-2026-5201
Forensia de MemóriaAnálise de VulnerabilidadesExploraçãoAnálise de BináriosPapers e PesquisaAprendizado e Educação
GitHubkagancapar/cve-2026-5201

CVE-2026-5201

CVE-2026-5201: Estouro de buffer baseado em heap no carregador de JPEG do gdk-pixbuf (CWE-122, CVSS 7.5)

Ver Repositório
13415há 1 mêsAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-5201

Estouro de buffer baseado em heap no carregador JPEG do gdk-pixbuf

Olá, sou Kağan Çapar. Descobri uma vulnerabilidade de estouro de buffer baseado em heap no carregador de imagens JPEG do gdk-pixbuf que afeta praticamente todos os ambientes de desktop Linux. A vulnerabilidade recebeu o identificador CVE-2026-5201 e foi reconhecida pela Red Hat com uma pontuação CVSS de 7.5 (Importante).

Este repositório contém minha análise completa, um reprodutor que escrevi do zero e as evidências do crash de um sistema Ubuntu 24.04 LTS em execução.

CVECVE-2026-5201
CWECWE-122 — Estouro de buffer baseado em heap
CVSS v37.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H)
Afetadogdk-pixbuf (todas as versões anteriores à correção)
FornecedorGNOME
Correçãogdk-pixbuf@6cce931
RastreadorGNOME #304
BugzillaRed Hat #2453291

Resumo

Encontrei um estouro de buffer baseado em heap no carregador de imagens JPEG do gdk-pixbuf (io-jpeg.c). O caminho de carregamento direto de arquivo (gdk_pixbuf__jpeg_image_load) não valida o número de componentes de cor antes de alocar o buffer de pixels. Um JPEG especialmente elaborado de 122 bytes, com 9 componentes declarados no cabeçalho SOF, mas apenas 3 escaneados no SOS, faz com que o gdk-pixbuf aloque um buffer para 3 canais enquanto o libjpeg grava 9 canais por pixel — resultando em um estouro de heap de até ~49 KB de dados controlados pelo atacante.

O caminho do carregador incremental já possuía exatamente essa validação, mas ela estava ausente no caminho de carregamento direto.

Impacto

  • Negação de Serviço: crash 100% confiável em qualquer aplicativo que use gdk_pixbuf_new_from_file()
  • Corrupção de heap: ponteiro da vtable do GObject (g_class) sobrescrito com dados de pixel
  • Execução de código: demonstrada em Linux de 32 bits via sequestro de vtable
  • Sistemas afetados: todos os desktops Linux — Ubuntu, Fedora, Debian, Arch, RHEL 7–10

Produtos Red Hat Afetados

Causa Raiz

Em gdk-pixbuf/io-jpeg.c, a função gdk_pixbuf__jpeg_image_load():

1. Alocação subdimensionada (linha 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. Escrita superdimensionada (linha 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. Validação ausente — o carregador incremental já verifica output_components na linha 1142, mas essa verificação não existia no caminho direto.

Reprodução

Gerar o reprodutor

root@kitploit:~
python3 reproducer/craft_cve_2026_5201.py

Isso cria um arquivo JPEG de 122 bytes com 9 componentes no cabeçalho SOF10 e apenas 3 escaneados no SOS.

Disparar o 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

Saída 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

Saída do GDB (sem 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

Correção

A correção adiciona a mesma validação de output_components que já existe no carregador 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 em gdk-pixbuf@6cce931.

Ambiente Testado

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

Referências

  • 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 — mesma classe de bug de incompatibilidade de buffer null_convert no gdk-pixbuf, classificada como Execução Remota de Código.

Crédito

Kağan Çapar — GitHub · LinkedIn · X

Reconhecido pela Red Hat no comunicado CVE-2026-5201.

Baixar ferramenta
ProdutoComponenteStatus
Red Hat Enterprise Linux 10gdk-pixbuf2Afetado
Red Hat Enterprise Linux 10loupeAfetado
Red Hat Enterprise Linux 10snapshotAfetado
Red Hat Enterprise Linux 9gdk-pixbuf2Afetado
Red Hat Enterprise Linux 8gdk-pixbuf2Afetado
Red Hat Enterprise Linux 7gdk-pixbuf2Afetado