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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
libheif-grid-nextjs-rce — Fortbridge PoC خاص لسلسلة CVE-2026-32740 Next.js/sharp leak-to-memcpy-GOT RCE | Kitploit
أدوات/GitHubGitHub/fortbridge-uk/libheif-grid-nextjs-rce
تحليل الذاكرة الجنائيتحليل الثغرات الأمنيةالاستغلالالهندسة العكسيةاستغلال تطبيقات الويباختبار الاختراقتطوير الحمولاتاستغلال الملفات الثنائيةمختبرات وتدريب عملي

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
GitHubfortbridge-uk/libheif-grid-nextjs-rce

libheif-grid-nextjs-rce

Fortbridge PoC خاص لسلسلة CVE-2026-32740 Next.js/sharp leak-to-memcpy-GOT RCE

عرض المستودع
1منذ 3 أياملم تتم المراجعة بعد

libheif grid-to-GOT Next.js RCE

إثبات مفهوم عملي يعمل على تحويل CVE-2026-32740 في حزمة Next.js/sharp ذات الإصدارات المثبتة إلى كتابة على عنوان مختار واستدعاء موثّق لـ /usr/bin/id.

هذا مستودع بحثي خاص بـ Fortbridge. استخدمه فقط ضد المختبر المضمّن أو أي نظام آخر مصرّح لك صراحةً باختباره.

ما يثبته إثبات المفهوم

يستخدم الاستغلال فقط مسارات رفع HTTP وتحسين الصور الخاصة بالهدف:

  1. يرسل بشكل متكرر ملف AVIF لتسريب ASLR ويقارن المؤشرات في البكسلات المُعادة مع كل ملف تعريف libvips مطابق في البيان.
  2. لا يمضي قدمًا إلا عندما يدعم ملف تعريف واحد وقاعدة libvips عشوائية واحدة جميع المراسي المستقلة المطلوبة.
  3. يحل محدّد العقدة المزيفة المكوّن من بايتين باستخدام ملف التعريف المختار. يتطلب ملف التعريف الافتراضي سجل كومة مُعلَّم كامل. يستخدم كل ملف تعريف PIE علاقة مسار الصفحة الخاص بالمُخصِّص المقاسة بشكل مستقل.
  4. يستخدم النسخة الداخلية من libvips لـ g_module_open_full من GLib، وهي روتين GModule يغلّف dlopen لتحميل مكتبة مشتركة أصلية من مسار ملف. يحسب الاستغلال عنوانه وقت التشغيل كقاعدة libvips المستردة زائد إزاحة ملف التعريف المثبتة 0x3e995e. تحميل المكتبة يشغّل البانية الخاصة بها.
  5. على جهاز المهاجم، يترجم كائنًا مشتركًا صغيرًا تشغّل بانيته الأمر الثابت /usr/bin/id. يرسل ذلك الملف ELF عبر مسار الرفع العام تحت اسم الصورة x.jpg ونوع الوسائط image/jpeg.
  6. يولّد ملف AVIF بأبعاد 116x33 من أربع بلاطات يؤدي فيه تجاوز Cb إلى إعادة توجيه مستوى Cr إلى memcpy@GOT - 16.
  7. يخزّن الصف الأول من العنوان المختار uploads/x.jpg مباشرة قبل خانة GOT ويستبدل memcpy@GOT بمحمّل GModule المشتق. يستدعي الصف التالي ذلك المحمّل مع مسار المكتبة الموجود بالفعل في RDI.
  8. تحميل الكائن المشترك يستدعي بانيته، الذي يعيد مخرجات /usr/bin/id عبر TCP. تمنع رمزية لكل محاولة احتساب استدعاء قديم كنجاح؛ سطر uid=... المُعاد هو الدليل.

تُسجَّل عمليات التحقق الأصلية المرتبطة بـ libvips في evidence/libvips-gmodule-rce-10x.json. أعادت جميع العمليات العشر الجديدة مخرجات /usr/bin/id صالحة مع عشر قواعد libvips عشوائية متمايزة وعشرة عناوين محمّل مشتقة بشكل مستقل.

توجد بيانات تشغيل Ubuntu الدقيقة في evidence/libvips-gmodule-pie-rce-10x.json. توجد بيانات تشغيل Debian 13 APT الدقيقة في evidence/debian13-apt-libvips-gmodule-rce-10x.json.

النتائج المقاسة

اختبرنا الاستغلال الكامل ضد 10 عمليات Node على Ubuntu مُشغَّلة حديثًا و10 عمليات Node على Debian مُشغَّلة حديثًا. وصلت جميع التشغيلات العشرين إلى تنفيذ الأوامر وأعادت مخرجات /usr/bin/id الخاصة بالهدف. كما حسب الاستغلال عنوان محمّل GModule مختلفًا لكل قاعدة libvips عشوائية.

قبل إنشاء الحمولة النهائية، قد يحتاج الاستغلال إلى عدة محاولات لتسريب ASLR. ترفع كل محاولة ملف AVIF للتسريب، وتمرّره عبر مسار التحسين، وتفحص ملف PNG المُعاد بحثًا عن أربعة مؤشرات تحدد ملف تعريف واحدًا وقاعدة libvips واحدة. احتاج Ubuntu ما بين 3 و23 محاولة. واحتاج Debian ما بين 3 و15. تؤدي الأدلة غير المكتملة أو الغامضة إلى محاولة أخرى بدلًا من تخمين ملف تعريف.

يحتوي المشروع أيضًا على 96 اختبار انحدار آلي. هذه فحوصات على مستوى الكود، وليست 96 تشغيلًا إضافيًا للاستغلال. وهي تغطي التحقق من ملفات التعريف، وتصنيف المؤشرات المُعادة، ومعايرة الكومة، وحساب العناوين، وبناء الحمولة، والفشل الآمن عندما لا تطابق الأدلة هدفًا مدعومًا.

الحزم المُختبرة

يستخدم كلا هدفي x86-64 الإصدار Next.js 15.5.23، وsharp 0.34.4، وlibvips 8.17.2 المضمّن، وlibheif 1.20.2 المضمّن، وASLR، وNX. تختلف بيئات التشغيل الأصلية بينهما:

ملف التعريفNodeglibclibstdc++علاقة المحدّد
Ubuntu25.8.1، PIE ET_DYN2.43-2ubuntu2.46.0.350x6000 - 0x690 = 0x5970
Debian 13Debian APT 20.19.2، PIE ET_DYN2.41-12+deb13u46.0.330x6000 - 0x3a0 = 0x5c60

توجد معرّفات البناء الكاملة وقيم SHA-256 في profiles/native_stack_profiles_pie.json. تُسجَّل حزمة Debian، والمنتج، واختبار المسار، وقياسات التخطيط لخمس دورات حياة في evidence/debian13-profile-derivation.json. يستخدم هدف Debian حزمة التوزيع القياسية nodejs=20.19.2+dfsg-1+deb13u3؛ لم يتم ترجمة Node من المصدر.

قيم ملف التعريف المثبتة

لا تحتاج السلسلة إلى قاعدة Node العشوائية. هدف التحكم الخاص بها هو الروتين الداخلي g_module_open_full داخل libvips، الذي تُسترد قاعدته العشوائية من البكسلات المُعادة. يثبّت كل ملف تعريف مُصدَّر الثوابت الخاصة بالبناء التي يتطلبها الاستغلال:

  • إزاحات المؤشرات المُعادة المستخدمة لاسترداد قاعدة libvips واختيار ملف تعريف متوافق مع البيئة الأصلية؛
  • إزاحة memcpy@GOT وإزاحة g_module_open_full بالإضافة إلى بايتات التعليمات المتحققة الخاصة به؛
  • علاقات مسار صفحة المُخصِّص والصفحة إلى العقدة المزيفة؛
  • إزاحات تخطيط الكائن، وهندسة البلاطات، وعرض الصف، ومسارات التطبيق.

لا تكون قاعدة libvips العشوائية، ولا عنوان المحمّل الناتج وقت التشغيل، ولا المحدّد النهائي المكوّن من بايتين مثبتة. بل تُشتق لكل عملية هدف من البكسلات المُعادة وملف التعريف المختار.

يفشل الاستغلال بشكل آمن عندما يكون ملف تعريف مشوّهًا أو عندما لا تحدد البكسلات المُعادة زوجًا واحدًا بالضبط من ملف تعريف/قاعدة مدعوم. يتطلب ملف التعريف الافتراضي أيضًا سجل الكومة المُعاد الكامل الخاص به. ملف التعريف هو ادعاء توافق دقيق، لذا ينبغي للمشغّل التحقق من منتجات الهدف دون اتصال قبل استخدامه.

واجهة المحمّل مهمة. يوفّر الاستدعاء المُستبدَل مسار المكتبة في RDI، ومؤشر صف الصورة في RSI، وطول النسخ البالغ 58 بايت في RDX. يستخدم روتين GModule المُعرَّف بدقة هذا فقط بتات الأعلام المدعومة من ESI ولا يفكّ مرجع RDX على مسار التحميل الناجح. تحقّق أداة اختبار دون اتصال من نقطة الدخول تلك وتوقيع التعليمات قبل استخدامها في التشغيلات المقاسة.

المتطلبات

  • Linux x86-64
  • Python 3.11 أو أحدث
  • ffmpeg مع مُرمِّز libaom-av1
  • مترجم C متاح باسم cc على جهاز المهاجم
  • عنوان استدعاء IPv4 يمكن الوصول إليه من الهدف
  • Node.js وnpm لتشغيل المختبر مباشرةً، أو Docker لأي من الهدفين

ثبّت الاعتماد الوحيد لـ Python:```bash python3 -m venv .venv . .venv/bin/activate python3 -m pip install -r requirements.txt

تأكيد دعم ترميز AV1:```bash
ffmpeg -hide_banner -encoders | grep libaom-av1

تشغيل المختبر المضمّن

يقبل المختبر عن قصد أي ملفات مرفوعة ويمرر ملفات مختارة إلى sharp. لا تعرّضه لشبكة غير موثوقة.```bash cd lab npm ci npm run build npm run start

الهدف متاح بعد ذلك على `http://127.0.0.1:3000`.

لبناء صورة مختبر Ubuntu حول أثر Node المستخدم بواسطة ملف تعريف PIE
الأول:```bash
./scripts/build_ubuntu2604_container.sh
docker run --rm --network host \
  fortbridge/libheif-grid-nextjs-rce:ubuntu2604

صورة Ubuntu 26.04 المقفلة بالبصمة تبني نسخة Node 25.8.1 PIE الدقيقة المسجلة في الملف التعريفي، وتتحقق من SHA-256 الخاص بها، ثم تنسخها إلى مرحلة تشغيل نظيفة. يُعد البناء من المصدر ضروريًا لأن ملف Node الثنائي الرسمي لنظام Linux هو ET_EXEC، بينما يختبر هذا الملف التعريفي عمدًا ملفًا تنفيذيًا من نوع PIE.

لإعادة إنتاج هدف Debian باستخدام حزمة APT المدعومة من Debian:```bash ./scripts/build_debian13_container.sh docker run --rm --network host
fortbridge/libheif-grid-nextjs-rce:debian13

الصورة مبنية من قاعدة Debian 13 slim مقفلة ببصمة digest. npm موجود
فقط في مرحلة البناء؛ الهدف النهائي يثبّت Node من Debian APT ويشغّل
نفس التطبيق والمسارات.

## تشغيل الاستغلال
تنزيل الأداة