Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-5201 — CVE-2026-5201:gdk-pixbuf JPEG 加载器中的堆缓冲区溢出(CWE-122,CVSS 7.5) | Kitploit
工具/GitHubGitHub/kagancapar/cve-2026-5201
内存取证漏洞分析漏洞利用二进制分析论文与研究学习与教育
GitHubkagancapar/cve-2026-5201

CVE-2026-5201

CVE-2026-5201:gdk-pixbuf JPEG 加载器中的堆缓冲区溢出(CWE-122,CVSS 7.5)

查看仓库
134151个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-5201

gdk-pixbuf JPEG加载器中的基于堆的缓冲区溢出

你好,我是Kağan Çapar。我在 gdk-pixbuf 的 JPEG 图像加载器中发现了一个基于堆的缓冲区溢出漏洞,该漏洞影响了几乎所有 Linux 桌面环境。该漏洞被分配了 CVE-2026-5201,并且被 Red Hat 确认,CVSS 评分为 7.5(重要)。

此仓库包含我的完整分析、我从零编写的复现程序,以及来自运行中的 Ubuntu 24.04 LTS 系统的崩溃证据。

CVECVE-2026-5201
CWECWE-122 — 基于堆的缓冲区溢出
CVSS v37.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H)
受影响版本gdk-pixbuf(修复前的所有版本)
厂商GNOME
修复提交gdk-pixbuf@6cce931
跟踪器GNOME #304
BugzillaRed Hat #2453291

总结

我在 gdk-pixbuf 的 JPEG 图像加载器(io-jpeg.c)中发现了一个基于堆的缓冲区溢出。直接文件加载路径(gdk_pixbuf__jpeg_image_load)在分配像素缓冲区之前没有验证颜色分量的数量。一个特制的 122 字节 JPEG 文件,在 SOF 头部声明了 9 个分量,但 SOS 中仅扫描 3 个,导致 gdk-pixbuf 为 3 个通道分配缓冲区,而 libjpeg 每个像素写入 9 个通道——从而造成最多约 49 KB 攻击者控制数据的堆溢出。

增量加载器路径已经包含了相同的验证,但直接加载路径中缺失了该检查。

影响

  • 拒绝服务:任何使用 gdk_pixbuf_new_from_file() 的应用程序都会 100% 可靠崩溃
  • 堆损坏:GObject 虚表指针(g_class)被像素数据覆盖
  • 代码执行:已在 32 位 Linux 上通过虚表劫持演示
  • 受影响系统:所有 Linux 桌面——Ubuntu、Fedora、Debian、Arch、RHEL 7–10

受影响的 Red Hat 产品

根本原因

在 gdk-pixbuf/io-jpeg.c 中,函数 gdk_pixbuf__jpeg_image_load():

1. 分配不足(第 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. 写入过多(第 696 行):

root@kitploit:~
jpeg_read_scanlines(cinfo, lines, cinfo->rec_outbuf_height);
// 将 output_components (9) 个字节写入每个像素的 3 字节缓冲区

3. 缺少验证——增量加载器已经在第 1142 行检查了 output_components,但直接路径中缺少该检查。

复现

生成复现文件

root@kitploit:~
python3 reproducer/craft_cve_2026_5201.py

这将创建一个 122 字节的 JPEG 文件,在 SOF10 头中有 9 个分量,在 SOS 中仅扫描 3 个。

触发崩溃

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

# 运行
./crash_test cve_2026_5201.jpg

预期输出(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 输出(无 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    ← 损坏的 GObject 虚表指针

修复

修复添加了与增量加载器中已有的相同的 output_components 验证:

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,
                "不支持的色彩分量数量 (%d)",
                cinfo->output_components);
    goto out;
}

已在 gdk-pixbuf@6cce931 中应用。

测试环境

操作系统Ubuntu 24.04.1 LTS
gdk-pixbuf2.42.10+dfsg-3ubuntu3.2
libjpeglibjpeg-turbo 2.1.5 (libjpeg.so.8.2.2)
GCC13.3.0

参考

  • 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

历史先例

CVE-2017-2862 (Cisco Talos TALOS-2017-0366) — CVSS 8.8 — 与 gdk-pixbuf 中相同的 null_convert 缓冲区不匹配漏洞类别,被归类为远程代码执行。

致谢

Kağan Çapar — GitHub · LinkedIn · X

已获 Red Hat 在 CVE-2026-5201 公告中致谢。

下载工具
产品组件状态
Red Hat Enterprise Linux 10gdk-pixbuf2受影响
Red Hat Enterprise Linux 10loupe受影响
Red Hat Enterprise Linux 10snapshot受影响
Red Hat Enterprise Linux 9gdk-pixbuf2受影响
Red Hat Enterprise Linux 8gdk-pixbuf2受影响
Red Hat Enterprise Linux 7gdk-pixbuf2受影响