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 です。私は、実質的にすべてのLinuxデスクトップ環境に影響するgdk-pixbufのJPEG画像ローダーにおけるヒープベースのバッファオーバーフロー脆弱性を発見しました。この脆弱性には 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) は、ピクセルバッファを確保する前にカラーコンポーネント数を検証していません。SOFヘッダーに9コンポーネントを宣言しながらSOSで3コンポーネントのみをスキャンする、特別に細工された122バイトのJPEGにより、gdk-pixbuf は3チャンネル分のバッファを確保する一方、libjpeg はピクセルごとに9チャンネルを書き込みます — その結果、攻撃者が制御する最大約49KBのヒープオーバーフローが発生します。

インクリメンタルローダーのパスにはこの正確な検証が既にありましたが、直接ロードのパスには欠落していました。

影響

  • サービス拒否 (DoS): gdk_pixbuf_new_from_file() を使用するあらゆるアプリケーションで100%再現性のあるクラッシュ
  • ヒープ破壊: GObjectのvtableポインタ(g_class)がピクセルデータで上書きされる
  • コード実行: 32ビットLinux上でvtableハイジャックによる実行を実証
  • 影響を受けるシステム: すべての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);
// writes output_components (9) bytes per pixel into a 3-byte buffer

3. 検証の欠落 — インクリメンタルローダーは既に 1142行目 で output_components をチェックしているが、直接ロードのパスにはこのチェックが存在しなかった。

再現

再現コードの生成

root@kitploit:~
python3 reproducer/craft_cve_2026_5201.py

これにより、SOF10ヘッダーに9コンポーネント、SOSでスキャンされるのは3コンポーネントだけの122バイトのJPEGファイルが作成されます。

クラッシュのトリガー

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

期待される出力 (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    ← corrupted GObject vtable pointer

修正

修正では、インクリメンタルローダーに既に存在するのと同じ 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,
                "Unsupported number of color components (%d)",
                cinfo->output_components);
    goto out;
}

修正は gdk-pixbuf@6cce931 で適用されました。

テスト環境

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

参考リンク

  • 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 バッファ不一致バグ分類で、リモートコード実行 (Remote Code Execution) に分類されています。

クレジット

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影響あり