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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
ds3-nrssr-rce — توثيق وكود إثبات المفهوم لـ CVE-2022-24125 وCVE-2022-24126. | Kitploit
أدوات/GitHubGitHub/tremwil/ds3-nrssr-rce
أطر الاستغلالتحليل الثغرات الأمنيةالاستغلالالهندسة العكسيةشيل كوداختبار الاختراقالتعلم والتعليمالفريق الأحمرتوليد شيفرة القشرةتطوير الحمولاتاستغلال الملفات الثنائية
169818منذ 4 سنواتتمت المراجعة من قبل Kitploit
GitHub
tremwil/ds3-nrssr-rce

ds3-nrssr-rce

توثيق وكود إثبات المفهوم لـ CVE-2022-24125 وCVE-2022-24126.

عرض المستودع

الأكثر شعبية

عرض الكل →

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

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

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

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

تحديث: Dark Souls III 1.15.1

تم إصدار تحديث جديد للعبة Dark Souls III، وهو 1.15.1، في 2022/08/25، مع استعادة الخدمات عبر الإنترنت. أصلح هذا التحديث كلاً من CVE-2022-24125 وCVE-2022-24126، إلى جانب مجموعة واسعة من الثغرات الأمنية المحتملة الأخرى الموجودة في شبكات P2P الخاصة باللعبة (قراءات/كتابات خارج النطاق). علاوةً على ذلك، تم إصلاح جميع الاستغلالات المعروفة التي تسمح بإفساد ملفات الحفظ الخاصة بلاعبين آخرين. كما تم تصحيح العديد من الغشاشات التافهة الشائعة (مثل "سكين اللعنة") التي قد تصادفها غالبًا أثناء اللعب الجماعي عبر الإنترنت.

ds3-nrssr-rce

يحتوي هذا المستودع على كود إثبات المفهوم والوثائق الخاصة بأحدث ثغرة RCE تؤثر على ألعاب FROM SOFTWARE، وهي CVE-2022-24126. ورغم أن ذلك ممكن نظريًا في ألعاب أخرى، فإن التركيز ينصب على Dark Souls III لأنها اللعبة التي أجريت عليها أبحاثي. حاليًا، يوجد كود إثبات المفهوم لـ Dark Souls III فقط، وقد تم تأكيد وجود الثغرة في:

  • Dark Souls 1 PTDE (الفضل: LukeYui)
  • Dark Souls Remastered (الفضل: metal-crow)
  • Dark Souls 2 (بما في ذلك Scholar) (الفضل: LukeYui)
  • Dark Souls 3 (حتى الإصدار 1.15.0) (الفضل: tremwil)

الكود القابل للاستغلال موجود أيضًا في Sekiro (الفضل: LukeYui)، على الرغم من عدم وجود طريقة لتفعيله. لم يتم تأكيد وجوده في Demon's Souls لكنه مرجح جدًا. بينما تأثر اختبار الشبكة المغلق بهذا، فإن نسخة الإصدار من Elden Ring غير متأثرة. في الواقع، تم تصحيح قائمة ضخمة من أعطال الشبكة، والقراءات/الكتابات خارج النطاق، والاستغلالات التي تسمح للاعبين بتعديل بيانات اللعبة الخاصة بأقرانهم، والتي كانت موجودة في Dark Souls III، داخل Elden Ring. الشكر موصول لـ LukeYui على تجميع هذه القائمة، ولـ FROM SOFTWARE على التصرف السريع! يسعدني أن أقول إن Elden Ring هي بلا منازع أكثر ألعاب FROM SOFTWARE أمانًا عندما يتعلق الأمر بمدى الضرر الذي يمكن أن يلحقه القراصنة.

تبديد المفاهيم الخاطئة

خلافًا للاعتقاد الشائع، هذه ليست ثغرة استغلال شبكات نظير-لنظير (P2P). إنها مرتبطة بخادم المطابقة (matchmaking) وبالتالي فهي أكثر خطورة بكثير، لأنك لست بحاجة إلى المشاركة في أي نشاط متعدد اللاعبين لتكون عرضة للخطر بسبب ثغرة أخرى في خادم المطابقة (CVE-2022-24125).

في Dark Souls III، كان بإمكان المهاجم الخبيث الذي يستغل هذه الثغرة تنفيذ حمولة تصل إلى 1.3MiB1 من شيلكود على جهاز كل لاعب متصل بالإنترنت بشكل موثوق خلال ثوانٍ.

مع وجود متوسط قاعدة لاعبين متزامنين يبلغ حوالي 20,000 لاعب في الأشهر التي سبقت إغلاق الخادم، كانت هذه مشكلة تتطلب إصلاحًا فوريًا، خاصة مع احتمال وجودها في Elden Ring. وبما أن FROM SOFTWARE لم تتحرك بعد أكثر من 40 يومًا من تقريري الأولي الذي تضمن مقاطع فيديو لإثبات المفهوم ووثائق تفصيلية للاستغلال (والتي يعتمد جزء كبير من هذا الملف على أساسها)، قررت إثبات وجود الثغرة علنًا بطريقة غير ضارة على أمل لفت الانتباه لمعالجتها من قبل المطورين، وقد نجح الأمر.

جدول المحتويات

  • ملخص الثغرة (CVE-2022-24126)
  • نواقل التوزيع (CVE-2022-24125)
  • الاستراتيجية العامة للاستغلال لجميع الألعاب
    • الخطأ رقم 1: عدم وجود فحص لحدود البيانات في محلل قائمة الإدخالات
    • الخطأ رقم 2: تجاوز سعة المخزن المؤقت في محلل NRSessionSearchResult
    • تمهيد الطريق لسلسلة الاستدعاءات الافتراضية / ROP
  • كود إثبات المفهوم لـ Dark Souls III
    • تشغيل كود PoC
    • ناقل الهجوم
    • سلسلة إعادة توجيه الاستدعاءات الافتراضية
    • معلومات إضافية

ملخص الثغرة (CVE-2022-24126)

يسمح الفحص غير السليم لحدود المخزن المؤقت في المكدس وحقل حجم البيانات أثناء تحليل بيانات المطابقة NRSessionSearchResult للمهاجم بتنفيذ تعليمات برمجية عشوائية. يتيح تجاوز سعة المكدس (stack overflow) الكتابة فوق البايتين السفليين من vftable_ptr لكائن DLMemoryInputStream المستخدم داخليًا بواسطة قارئ التدفق، مما يعيد توجيه التنفيذ إلى تعليمات برمجية مجاورة مختارة بعناية. بعد ذلك، يسمح الاستغلال الذكي لبنية كائن DLMemoryInputStream وحقل حجم البيانات بتحقيق إعادة توجيه تعليمات برمجية عشوائية، بحيث يشير RCX إلى عنوان حزمتنا. ومن هناك، يمكن استخدام سلسلة من عمليات إعادة توجيه التعليمات البرمجية عبر استدعاءات افتراضية بإزاحات مختلفة (والتي ستقفز الآن إلى أي عناوين كتبناها في مخزن الحزمة) لتحقيق تنفيذ تعليمات برمجية عشوائية.

نواقل التوزيع (CVE-2022-24125)

نواقل التوزيع هي ما يجعل هذه الثغرة تحديدًا خطيرة جدًا (بالإضافة إلى كونها أصلًا RCE). تنتقل الثغرة عبر طلبات دفع المطابقة (matchmaking push requests) التي تحتوي على معلومات NRSessionSearchResult. وهذا يعني أن المهاجم يمكنه استهداف أي شخص ينضم إلى جلسته عبر الإنترنت. على وجه الخصوص، بالنسبة لـ DS3:

  • الاستدعاءات (summons) (PushRequestSummonSign)
  • غزاة الأرواح المظلمة (PushRequestAllowBreakInTarget)
  • اللاعبون الذين ينضمون عبر العهود (PushRequestVisit)
  • المتنافسون في الساحة (PushRequestAcceptQuickMatch)

هذا بالفعل سيئ جدًا، لكن الإمكانات الحقيقية تتحقق عبر طلب RequestSendMessageToPlayers:

message RequestSendMessageToPlayers { 
    repeated uint32 player_ids = 1; 
    required bytes push_message = 2;
}

يستخدم المضيف هذا الطلب لإرسال رسالة الدفع PushRequestAllowBreakInTarget مباشرة إلى الغزاة حتى يتمكنوا من الحصول على إحداثيات الظهور والانضمام إلى جلسة P2P الخاصة به. هذا كل شيء. هذه هي الطريقة الوحيدة التي تستخدم بها اللعبة هذا الطلب.

ومع ذلك، فإنه يسمح لأي عميل بإرسال رسائل دفع عشوائية إلى مئات الآلاف من اللاعبين المحددين.

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

الاستراتيجية العامة للاستغلال لجميع الألعاب

في حين أن ثغرة RCE لا تُنقل بالضبط إلى كل لعبة، فإن الفكرة الأساسية للاستغلال التي تمنح المهاجم إعادة توجيه تعليمات برمجية عشوائية هي نفسها. إذا أمكن تحقيق ذلك، فمن المرجح جدًا العثور على سلسلة استدعاءات افتراضية أو سلسلة ROP خاصة باللعبة. تستخدم هذه "الخطوة الأولى" الثغرات التالية:

الخطأ رقم 1: عدم وجود فحص لحدود البيانات في محلل قائمة الإدخالات

تقوم طلبات دفع المطابقة التي تحتوي على معلومات الانضمام إلى الجلسة بتخزين هذه المعلومات في تنسيق ثنائي مخصص يتكون من سلسلة من إدخالات البيانات المحددة بالطول. لكل إدخال التنسيق التالي:

struct Entry
{
    uint32_t type_or_id; // not sure, but probably a type (fixed length = 2, variable length = 1 ?)
    uint32_t size;
    uint8_t data[size];
}

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

Footnotes

  1. بالنسبة إلى Dark Souls III الإصدار 1.15. يعتمد الحد الأقصى النظري لحجم الحمولة على تخطيط المكدس، وبالتالي يختلف حسب اللعبة والإصدار. ↩

تنزيل الأداة