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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-36834 — إثبات مفهوم قابل لإعادة الإنتاج لـ CVE-2026-36834 يوضح قراءة مصفوفة خارج الحدود في مفكك Panasonic RW2 في LibRaw، مع سكربت طفرة وإعادة إنتاج الانهيار القائم على المطهر. | Kitploit
أدوات/GitHubGitHub/kpatsakis/cve-2026-36834
تحليل الذاكرة الجنائيتحليل الثغرات الأمنيةالاختبار العشوائيتحليل الملفات الثنائيةالأوراق والأبحاثالتعلم والتعليم
GitHubkpatsakis/cve-2026-36834

CVE-2026-36834

إثبات مفهوم قابل لإعادة الإنتاج لـ CVE-2026-36834 يوضح قراءة مصفوفة خارج الحدود في مفكك Panasonic RW2 في LibRaw، مع سكربت طفرة وإعادة إنتاج الانهيار القائم على المطهر.

عرض المستودع
11منذ 3 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

ملخص

توجد قراءة خارج حدود المصفوفة في src/decoders/pana8.cpp. يمكن للدالة GetDBit() إرجاع القيمة 17 عندما لا يتم العثور على تطابق في جدول هوفمان، ولكن المصفوفة huff_coeff[] مُعرَّفة بـ 17 عنصرًا فقط (المؤشرات الصالحة من 0 إلى 16). يؤدي هذا إلى الوصول إلى huff_coeff[17]، مما يسبب سلوكًا غير محدد تم تأكيده بواسطة UBSan وAddressSanitizer.

التأثير

التطبيقات التي تعالج ملفات RW2 المقدمة من المستخدم، مثل برامج تحرير الصور أو أدوات إدارة الصور التي تستخدم LibRaw، قد تتعطل أو قد تسرّب ذاكرة العملية عند فتح ملف خبيث.

CWE: CWE-125 (قراءة خارج الحدود), CWE-129 (التحقق غير السليم من فهرس المصفوفة) CVSS v3.1: AV:L/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:H (~6.5 متوسط) Git commit: 777f20ae21c611a78021bd051fbbf1e71eae78f2

الكود المتأثر

الملف: src/decoders/pana8.cpp الدالة: pana8_param_t::DecodeC8()

السبب الجذري هو في GetDBit():

  uint32_t pana8_param_t::GetDBit(uint64_t a2)
  {
      for (int i = 0; i < 16; i++)
          if ((a2 & hufftable2[i]) == hufftable1[i])
              return i;
      return uint32_t((hufftable2[16] & a2) == hufftable1[16]) ^ 0x11u;
      // When comparison is false: returns 0 ^ 17 = 17
  }

ثم يتم استخدام القيمة المرجعة مباشرةً كفهرس مصفوفة دون أي فحص للحدود:

  huff_index = int(GetDBit(pixbits));          // can be 17
  int32_t v37 = (huff_coeff[huff_index] >> 24) // line 250: OOB
  uint32_t hc = huff_coeff[huff_index];        // line 251: OOB
  // ... and lines 254, 273

سلسلة الاستدعاء المؤكدة (مخرجات UBSan) LibRaw::unpack() -> panasonicC8_load_raw() pana8.cpp:125 -> pana8_decode_loop() pana8.cpp:132 -> pana8_decode_strip() pana8.cpp:155 -> DecodeC8() pana8.cpp:250 <-- OOB triggered

أخطاء UBSan التي تم إطلاقها: pana8.cpp:250 index 17 out of bounds for type 'unsigned int [17]' pana8.cpp:251 index 17 out of bounds for type 'unsigned int [17]' pana8.cpp:254 index 17 out of bounds for type 'unsigned int [17]' pana8.cpp:254 shift exponent -17 is negative pana8.cpp:273 index 17 out of bounds for type 'unsigned int [17]' pana8.cpp:303 left shift of negative value -1

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

قم ببناء LibRaw مع sanitizers:

  ./configure CXXFLAGS="-fsanitize=address,undefined -g -O1" \
            LDFLAGS="-fsanitize=address,undefined"
  make -j$(nproc)

شغّل سكربت التحوير (mutator) على أي ملف RW2 من باناسونيك:

  python3 mutate_rw2.py input.rw2 mutated_pana8.rw2
  ASAN_OPTIONS=halt_on_error=0:print_stats=1 ./bin/dcraw_emu -v mutated_pana8.rw2

التصحيح

https://github.com/LibRaw/LibRaw/commit/02da167e0f819a37dbb7d714e87c5b40df6c5917

تنزيل الأداة