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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
kartlanpwn — معلومات وPoC لثغرة CVE-2024-45200، ثغرة تجاوز سعة المخزن المؤقت "KartLANPwn" في لعبة Mario Kart 8 Deluxe | Kitploit
أدوات/GitHubGitHub/chadhyatt/kartlanpwn
تحليل الثغرات الأمنيةالاستغلالالأوراق والأبحاثالتعلم والتعليماستغلال الملفات الثنائية
GitHubchadhyatt/kartlanpwn

kartlanpwn

معلومات وPoC لثغرة CVE-2024-45200، ثغرة تجاوز سعة المخزن المؤقت "KartLANPwn" في لعبة Mario Kart 8 Deluxe

عرض المستودع
64منذ سنة واحدةتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

Kart"LAN"Pwn (CVE-2024-45200)

معلومات وإثبات المفهوم لثغرة تجاوز سعة المخزن المؤقت المستندة إلى المكدس "KartLANPwn" في لعبة Mario Kart 8 Deluxe
كتبها Chad Hyatt

CVECVE-2024-45200
CVSS 3.1غير محدد (Nintendo.. تدّعي أنها 4.3/10)
المكافأة المدفوعة$512
تقرير H1#2611669
تاريخ الاكتشاف2 يوليو 2024
تم الإصلاح11 سبتمبر 2024 (v3.0.3)
تم الكشف29 سبتمبر 2024

المحتويات

  • معلومات أساسية
  • مقدمة
    • بروتوكول LAN (حزمة الرد على الاستعراض)
    • "LAN_CopyAppData" كود شبه رمزي
  • إثبات المفهوم
    • عرض توضيحي لإثبات المفهوم
  • أفكار ختامية
  • الاعتمادات
  • الجدول الزمني للتقرير
  • الترخيص

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

KartLANPwn هي ثغرة في الاستخدام الخاطئ من لعبة Mario Kart 8 Deluxe لمكتبة الشبكات من نظير إلى نظير Pia، حيث يتم أحيانًا استدعاء التطبيقات الفردية لـ "CopyAppData" مع outBufSize أكبر من المخزن المؤقت out نفسه. يمكن أن يؤدي هذا إلى تنفيذ كود عن بُعد (RCE) في وضع المستخدم على أجهزة الأقران إذا تم ربطه بتسريب معلومات. تؤثر KartLANPwn على استخدام تطبيقات Pia للعب الجماعي LAN/LDN واللعب الجماعي عبر الإنترنت NEX.

تؤثر هذه الثغرة على جميع إصدارات Mario Kart 8 Deluxe حتى v3.0.1 (v3.0.2 للصين/Tencent)، وقد تم عرضها تحديدًا عبر ميزة "LAN Play" في الإصدار التجاري v3.0.1 من MK8DX.

اعتبارًا من 2024/09/11، نشرت Nintendo إصلاحًا لـ KartLANPwn إلى جانب v3.0.3 لجميع المناطق، باستثناء الصين. اعتبارًا من 2024/09/27، تم إصدار v3.0.3 الآن أيضًا للصين. لقد كشفنا عن هذه المعلومات بأمان بعد الحصول على إذن من Nintendo.

مقدمة

تُستخدم مكتبة الشبكات الاحتكارية Pia في ألعاب Nintendo Switch من الطرف الأول التي تدعم اللعب المحلي أو عبر الإنترنت لتوفير تطبيقات كود شبكة من نظير إلى نظير لبروتوكول LAN/LDN (اللعب الجماعي المحلي) وبروتوكول NEX، المستخدم للعب الجماعي عبر الإنترنت.

لأغراض العرض التوضيحي، سنركز تحديدًا على بروتوكول LAN الخاص بـ Pia. يفتح جهاز مضيف الغرفة مقبس UDP "اكتشاف" على :30000 على عنوان بث محلي (255.255.255.255) ومن المفترض أن تقوم الأجهزة الأخرى على نفس الشبكة بالإعلان عن "طلبات استعراض" من المقبس الخاص بها (أيضًا على :30000) إلى جهاز التوجيه لإعادة توجيهها إلى الأجهزة الأخرى على نفس الشبكة.

يرسل مضيف الغرفة (خادمنا) رد "استعراض" أوليًا من المفترض أن يحتوي على معلومات حول الغرفة (اسم عرض المضيف، بيانات Mii، عدد اللاعبين، إلخ). داخل حزمة الرد على الاستعراض، يمكن التحكم في طول بيانات التطبيق التي سيتم نسخها إلى المخزن المؤقت out بقيمة تصل إلى 150، على الرغم من أن out يبلغ عرضه 128 بايت فقط. وهذا يسمح بتجاوز القيم في إطار المكدس (في هذه الحالة تحديدًا، من أجل pop {r4-r8, pc}).

بروتوكول LAN (حزمة الرد على الاستعراض)

على الأقل في حالة إصدار Pia الذي تستخدمه MK8DX، بالنسبة لما نركز عليه، يتم إنشاء حزم الرد على الاستعراض لـ LAN على النحو التالي:

(جميع أنواع الأعداد الصحيحة مُرمّزة بنمط big-endian)

يتبع باقي معلومات الجلسة، على الرغم من أنها غير مهمة لصنع حزمة لـ KartLANPwn

"LAN_CopyAppData" كود شبه رمزي

لأغراض العرض التوضيحي، فيما يلي كود شبه رمزي تقريبي من تطبيق LAN لـ "CopyAppData". على الرغم من عدم وجود خطأ جوهري في هذه الوظيفة بمفردها، فإن الاستخدام غير الصحيح (في حالة MK8DX) يمكن أن يسمح بالكتابة فوق إطار المكدس بواسطة بيانات التطبيق المُدخلة في packet.

(الوظيفة موجودة على @ +0xA0F8C0 في main لإصدار MK8DX v3.0.1)

root@kitploit:~
void LAN_CopyAppData(int* r0, int packet, int out, uint outBufSize) {
    int u1 = 68612;

    if (out != NULL) {
        // The actual length to read from the `packet` buffer at the start of our
        // application data (which our 'server' controls)
        uint appDataLength = *(uint *)(packet + 432);

        // In some cases, outBufSize is input as a larger number than the bounds of the
        // `out` buffer, which allows a stack buffer overflow (in our specific case, `*out`
        // is 128 bytes long, and outBufSize is 150!)
        if (appDataLength <= outBufSize) {
            memcpy(out, packet + 48, outBufSize); // packet[47], start of application data

            u1 = 0;
        }

        *r0 = u1;
        return;
    }

    *r0 = 68615;
    return;
}

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

انظر kartlanpwn-poc.py

لقد قدمنا نصًا برمجيًا بسيطًا لإثبات المفهوم مكتوبًا بلغة Python، يعمل كمضيف غرفة مزيف يرد على أجهزة الأقران بحزمة "رد استعراض" مصممة خصيصًا ستُعطّل عملية اللعبة عند فتح قائمة "LAN Play" في MK8DX من جهاز على نفس الشبكة التي يعمل عليها الكمبيوتر الذي يشغّل النص البرمجي.

المتطلبات

  • إصدار حديث من Python 3

إما تنزيل ملف zip للمستودع مباشرة من GitHub، أو الاستنساخ باستخدام git:

root@kitploit:~
git clone https://github.com/latte-soft/kartlanpwn.git && cd kartlanpwn
python3 kartlanpwn-poc.py

عرض توضيحي لإثبات المفهوم

شاهد العرض التوضيحي بالفيديو (YouTube):

يوتيوب - عرض KartLANPwn التوضيحي (CVE-2024-45200)

وللمهووسين بمعمارية ARM، إليكم لقطة شاشة من GDB لتعطل العملية الناتج:

لقطة شاشة GDB

أفكار ختامية

استغرق الأمر بضعة أيام فقط لمعرفة تفاصيل الثغرة نفسها، لكن الاستفادة الفعلية من التجاوز؟ فتلك مسألة مختلفة ومعقدة تمامًا. وضع المستخدم في نواة Nintendo Switch لا يمزح؛ إنه صارم للغاية في كل زاوية يمكن أن يكون فيها. قضينا ساعات طويلة في تبادل والعبث بأفكار وخيوط مختلفة، دون جدوى في النهاية لتنفيذ كود حقيقي (عشوائي). في حالتنا تحديدًا، حتى استغلال ROP الموثوق لم يبدُ ممكنًا جدًا، نظرًا لأن جميع الوظائف المتعلقة بالشبكات تقريبًا كانت قائمة على الفئات، كما كان لدينا وصول كتابة مباشر فقط إلى r4-r8. (*_this حبيبي) بالإضافة إلى ذلك، بدون تسريب معلومات مسبق، ليس من السهل جدًا تخطي mov r4, r0 أو ما شابه ذلك للتحكم في مؤشر _this. أشياء ممتعة!

أما على صعيد التقرير، كانت العملية سلسة نسبيًا هذه المرة مع فرز Nintendo من وقت التقرير حتى الكشف. ورغم أن دفعة المكافأة البالغة $512 كانت أقل بكثير مما توقعت (أليست كذلك دائمًا؟)، فأي شيء أفضل من ظهور "نينجا Nintendo" عند بابي..

لقد تعلمت Nintendo بالتأكيد درسها مما كانت عليه الأيام الأبسط لأجهزة Wii و3DS وحتى Wii U. لقد أدّوا واجبهم؛ فنجاح أي استغلال يتجاوز تعطيل الخدمة (DoS) من وضع المستخدم على Switch يكاد يكون مستحيلًا. ASLR، والصفحات المفروضة غير القابلة للتنفيذ (لا يمكنك الكتابة مباشرة إلى صفحات الذاكرة القابلة للتنفيذ، تحتاج الألعاب إلى استخدام وحدة نظام مخصصة فقط من أجل JIT!)، وعدم القدرة على ROP، من بين نقاط الألم الأخرى. (بانتظار مجتمع التعديل ليدحض هذه الكلمات في أي وقت قريب..) من ناحية أخرى، في الأشهر القليلة الماضية، تعلمت الكثير عن منصة ومعمارية جديدة تمامًا (بالنسبة لي على أي حال) في فترة زمنية قصيرة جدًا، ناهيك عن الأشخاص الرائعين الذين تشرفت بالعمل معهم على KartLANPwn! (شكرًا Pablo وfishguy 😄)

الاعتمادات

  • المكتشف: Chad Hyatt
  • مساعدة كبيرة وشكر جزيل: PabloMK7, fishguy6564
  • دعم معنوي 🙃: Justus, Sky

الجدول الزمني للتقرير

الترخيص

CC BY 4.0

KartLANPwn © 2024 مرخّص بموجب CC BY 4.0.
لعرض نسخة من هذا الترخيص، تفضل بزيارة https://creativecommons.org/licenses/by/4.0/


خطأ LAN-play الخبيث..
تنزيل الأداة
الفهرسالنوع شبه الرمزيالوصف
0u8نوع الحزمة (0x1)
1u32حجم جسم معلومات الجلسة (1266 في حالتنا)
5(42 بايت)حقول معلومات جلسة متنوعة، غير ذات صلة بنا
47(0x180 بايت)بداية مساحة بيانات التطبيق
431u32طول بيانات التطبيق
التاريخالمعلومات
2024/07/18تم إرسال التقرير إلى Nintendo عبر HackerOne
2024/07/31تم فرز التقرير داخليًا
2024/09/11تم إصدار الإصلاح مع Mario Kart 8 Deluxe v3.0.3 لجميع المناطق، باستثناء الصين
2024/09/12تم دفع المكافأة بواسطة Nintendo
2024/09/12اكتشف باحثون آخرون بسرعة كبيرة الإصلاح لـ "ثغرة أمنية في كود شبكة اللعبة" في bindiff لإصدار v3.0.3
2024/09/27تم إصدار Mario Kart 8 Deluxe v3.0.3 لمنطقة الصين
2024/09/29منحت Nintendo الإذن بالكشف، وتم جعل هذا المستودع عامًا
2024/09/30تم نشر CVE-2024-45200 بواسطة NVD