Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-5201 — CVE-2026-5201: تجاوز سعة المخزن المؤقت على الكومة في محمّل JPEG الخاص بـ gdk-pixbuf (CWE-122, CVSS 7.5) | Kitploit
أدوات/GitHubGitHub/kagancapar/cve-2026-5201
تحليل الذاكرة الجنائيتحليل الثغرات الأمنيةالاستغلالتحليل الملفات الثنائيةالأوراق والأبحاثالتعلم والتعليم
GitHubkagancapar/cve-2026-5201

CVE-2026-5201

CVE-2026-5201: تجاوز سعة المخزن المؤقت على الكومة في محمّل JPEG الخاص بـ gdk-pixbuf (CWE-122, CVSS 7.5)

عرض المستودع
13415منذ شهر واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

CVE-2026-5201

تجاوز سعة المخزن المؤقت في الكومة في محمّل صور JPEG الخاص بـ gdk-pixbuf

مرحبًا، أنا Kağan Çapar. اكتشفت ثغرة تجاوز سعة المخزن المؤقت في الكومة في محمّل صور JPEG الخاص بـ gdk-pixbuf، وهي ثغرة تؤثر على جميع بيئات سطح المكتب في لينكس تقريبًا. تم تخصيص 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

الملخص

اكتشفت ثغرة تجاوز سعة المخزن المؤقت في الكومة في محمّل صور JPEG الخاص بـ gdk-pixbuf (io-jpeg.c). مسار تحميل الملف المباشر (gdk_pixbuf__jpeg_image_load) لا يتحقق من عدد مكونات الألوان قبل تخصيص مخزن البكسلات. ملف JPEG مصنوع بعناية بحجم 122 بايت يعلن عن 9 مكونات في ترويسة SOF بينما يتم مسح 3 مكونات فقط في SOS، مما يتسبب في تخصيص gdk-pixbuf لمخزن يتسع لـ 3 قنوات بينما يكتب libjpeg 9 قنوات لكل بكسل — وهو ما يؤدي إلى تجاوز سعة في الكومة يصل إلى ~49 كيلوبايت من البيانات التي يتحكم بها المهاجم.

كان مسار المحمّل التزايدي يحتوي بالفعل على هذا التحقق بعينه، لكنه كان مفقودًا من مسار التحميل المباشر.

التأثير

  • رفض الخدمة (Denial of Service): انهيار مضمون بنسبة 100% لأي تطبيق يستخدم gdk_pixbuf_new_from_file()
  • تلف الكومة (Heap corruption): استبدال مؤشر جدول الدوال الافتراضية (vtable) لكائن GObject (g_class) ببيانات البكسل
  • تنفيذ التعليمات البرمجية: تم إثباته على لينكس 32-بت عبر اختطاف vtable
  • الأنظمة المتأثرة: جميع أسطح مكتب لينكس — 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. تحقق مفقود — المحمّل التزايدي يتحقق بالفعل من output_components عند السطر 1142، لكن هذا التحقق كان غائبًا عن المسار المباشر.

إعادة الإنتاج

توليد أداة إعادة الإنتاج

root@kitploit:~
python3 reproducer/craft_cve_2026_5201.py

ينشئ هذا ملف JPEG بحجم 122 بايت يحتوي على 9 مكونات في ترويسة SOF10 و3 مكونات فقط ممسوحة في SOS.

إطلاق الانهيار

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.

بيئة الاختبار

نظام التشغيل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 — نفس فئة خلل عدم تطابق المخزن المؤقت null_convert في gdk-pixbuf، وقد صُنِّفت على أنها تنفيذ عن بُعد للتعليمات البرمجية.

الإشادة

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متأثر