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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
VectorFreed — يوثّق سلسلة RCE من نوع use-after-free في VectorFreed librsvg (CVE-2026-96889) مع PoC لمولّد SVG وإرشادات المعالجة لـ librsvg وNext.js وSatori. | Kitploit
أدوات/GitHubGitHub/rafabd1/vectorfreed
تحليل الذاكرة الجنائيتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبجمع المعلوماتالأوراق والأبحاثاستغلال الملفات الثنائية
GitHubrafabd1/vectorfreed

VectorFreed

يوثّق سلسلة RCE من نوع use-after-free في VectorFreed librsvg (CVE-2026-96889) مع PoC لمولّد SVG وإرشادات المعالجة لـ librsvg وNext.js وSatori.

عرض المستودع
19178منذ 22س 58دلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

VectorFreed

الملخص

تقدم هذه الوثيقة "VectorFreed"، وهي سلسلة ثغرات تبدأ بثغرة استخدام بعد التحرير (use-after-free) اكتشفتها أنا (@rafabd1) في librsvg (CVE-2026-96889). في بناء Node.js/Sharp/libvips، أدت هذه الثغرة إلى تنفيذ أوامر. وتغطي الوثيقة الثغرة، والمسارات المؤكدة في التطبيقات حتى الآن، والإصلاحات المتاحة حالياً.

التفاصيل

يمكن لملف SVG أن يتضمن ملف SVG آخر عبر XInclude. في المسار المصاب، يبدأ librsvg في تحليل مستند مُضمَّن بينما لا يزال libxml2 يوسّع كياناً (entity) في المستند الخارجي. إذا أعلن ملف SVG المُضمَّن عن كيان يحمل الاسم نفسه، يستبدل librsvg الكيان الأول ويحرره. لكن libxml2 لا يزال يحتفظ بمؤشر إليه.

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

أين يظهر

يحتاج المهاجم إلى ترميز SVG مُصمَّم بعناية للوصول إلى librsvg. يمكن أن يحدث ذلك عندما يقبل تطبيق ما ملف SVG، لكنه يمكن أن يحدث أيضاً عندما يبني التطبيق ملف SVG من مدخلات المستخدم. مجرد استخدام librsvg في مكان ما ضمن شجرة التبعيات لا يثبت وجود مسار قابل للاستغلال؛ يجب أن يصل المُدخل إلى بناء مصاب عند عرض الصورة.

Next.js

ImageResponse

مسار Next.js الذي اختبرناه كان يقبل نصاً بدلاً من رفع ملف SVG. وقد وضع ذلك النص داخل SVG مضمّن للنسخة الخاصة بـ Node.js من ImageResponse. سمحت ثغرة تهريب منفصلة في Satori للنص بتغيير ترميز SVG المُولَّد. ثم مرّر Sharp/libvips ذلك الـ SVG إلى librsvg. وقد تتبعت Vercel مسار Next.js تحت CVE-2026-94545. نسخة Edge من ImageResponse غير متأثرة بهذا المسار. إليك إعادة إنتاج قصيرة لـ Next.js.

تحسين الصور

وصل مسار ثانٍ في Next.js إلى ثغرة librsvg نفسها عبر واجهة برمجة تطبيقات تحسين الصور (Image Optimization API). عندما قبلت الواجهة مصدر صورة يتحكم به المهاجم، كان بإمكان صورة مُصمَّمة تجاوز رفض الإطار لملفات SVG ثم التعامل معها لاحقاً كـ SVG بواسطة Sharp/libvips. وقد كشف هذا عن إفساد الذاكرة في المنبع لطلبات غير مصادَق عليها على Linux القائم على glibc دون استخدام Satori أو ImageResponse.

نشرت Vercel هذا المسار تحت GHSA-2464-fhr4-w9xw، ضمن CVE-2026-96889 في المنبع. يصنّف الإشعار الثغرة كحرجة بدرجة CVSS تبلغ 9.5.

Ghost

لدى Ghost مسار مختلف. كان بإمكان مستخدم من الموظفين، بما في ذلك مساهم (Contributor)، إنشاء بطاقة إشارة مرجعية (bookmark card) لموقع يتحكم به. ثم كان معالجة صورة البطاقة قد ينفّذ أوامر على خادم Ghost. نشرت Ghost هذا تحت CVE-2026-105642.

النطاق

خلال هذا البحث، حددت مسارات إدخال مصابة في منتجات متعددة في المصب وأكدت تنفيذ أوامر في العديد منها، بما في ذلك كلا مساري Next.js وحالة Ghost أعلاه. تختلف طريقة وصول ذلك المُدخل إلى librsvg من منتج لآخر. لهذا السبب يمكن أن تظهر ثغرة محلل صور في المنبع في أماكن لا تبدو ذات صلة للوهلة الأولى؛ وحالة libheif الأخيرة مثال آخر. وهذا لا يعني أن كل منتج يستخدم librsvg قابل للاستغلال عن بُعد.

ما يجب تحديثه

  • librsvg: يحتوي الإصدار 2.63.2 على الإصلاح، مع ترقيات خلفية في 2.62.4، و2.61.5، و2.60.3، و2.57.5، و2.56.6. إذا كنت تستخدم إصدارًا أقدم من أحد المورّدين، فتحقق مما إذا كان يتضمن الإصلاح. راجع تنبيه librsvg.
  • Next.js (ImageResponse): الإصدارات من 16.2.0 إلى 16.3.5 متأثرة عندما يضع التطبيق قيمًا يتحكم بها المهاجم في محتوى SVG أو سماته أو أنماطه. قم بالترقية إلى 16.3.6.
  • Next.js (Image Optimization): يُدرج التنبيه >= 10.0.0 <= 15.5.27 و> 16.0.0 <= 16.4.0 كإصدارات متأثرة. قم بالترقية إلى 15.5.28 أو 16.4.1. يحتوي Sharp 0.35.5 أو أحدث على الإصلاح الأصلي.
  • Ghost: يُدرج Ghost الإصدارات >= 6.56.0 و< 6.67.0 كإصدارات متأثرة. قم بالترقية إلى 6.67.0.
  • Satori: إذا كنت تستخدمه مباشرةً، فإن 0.33.5 يصلح خطأ التهريب المنفصل المستخدم في مسار Next.js.

إذا كنت تستخدم الملفات الثنائية المُجمّعة مسبقًا من Sharp، فتحقق من حزمة @img/sharp-libvips-* التي ثبّتها تطبيقك. فهي تضمّن libvips وتبعياته، بما في ذلك librsvg. قد يؤدي تحديث نسخة النظام من librsvg إلى ترك تطبيقك يستخدم النسخة القديمة.

إثباتات المفهوم وما سيأتي لاحقًا

يتضمن إثبات مفهوم UAF مولّد SVG لعدة مسارات إدخال، ويمكن استخدامه للتحقق من use-after-free في بداية السلسلة.

يُعدّ إثبات مفهوم RCE لـ Next.js ImageResponse من EQSTLab مثالًا عمليًا على تلك السلسلة لإصدار Node.js/Sharp المثبّت لديه. فهو يولّد الحمولة ويرسلها تلقائيًا. أصبح الاستغلال العملي متاحًا للعموم الآن، لذا حدّث التبعيات المتأثرة أو خفّف مسار الإدخال في أقرب وقت ممكن.

[!WARNING] لا يوجد إثبات مفهوم RCE شامل لهذه السلسلة. يستهدف مثال EQSTLab الإصدار المثبّت لديه؛ وقد تحتاج الأهداف الأخرى إلى حمولات مختلفة. إثباتات المفهوم التي تعتمد على SVG <foreignObject> لتنفيذ الأوامر لا تُظهر السلسلة الموصوفة هنا.

للتحقق الأولي على أهداف أخرى، يُعدّ إثبات مفهوم UAF أكثر عملية. سأنشر أيضًا التقرير التقني في الأسابيع القادمة، مع الخطوات من UAF إلى تنفيذ الأوامر وتحليل لاحق يغطي هذا الشهر الماضي من البحث في السلسلة.

المراجع

  • مشكلة librsvg وإصلاحها
  • تنبيه librsvg من RustSec
  • تحديث أمان Next.js ImageResponse والتنبيه
  • تنبيه Next.js Image Optimization
  • تنبيه Ghost
  • تنبيه Satori
  • منشور إعادة إنتاج Next.js
تنزيل الأداة