Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
kartlanpwn — CVE-2024-45200 के लिए तकनीकी विश्लेषण और प्रूफ-ऑफ-कॉन्सेप्ट: यह Mario Kart 8 Deluxe की Pia P2P नेटवर्किंग लाइब्रेरी में एक स्टैक-आधारित बफ़र ओवरफ़्लो है, जो Nintendo Switch पर दूरस्थ क्रैश और संभावित RCE को सक्षम बनाता है। | Kitploit
उपकरण/GitHubGitHub/chadhyatt/kartlanpwn
भेद्यता विश्लेषणशोषणपेपर और शोधलर्निंग और शिक्षाबाइनरी शोषण
GitHubchadhyatt/kartlanpwn

kartlanpwn

CVE-2024-45200 के लिए तकनीकी विश्लेषण और प्रूफ-ऑफ-कॉन्सेप्ट: यह Mario Kart 8 Deluxe की Pia P2P नेटवर्किंग लाइब्रेरी में एक स्टैक-आधारित बफ़र ओवरफ़्लो है, जो Nintendo Switch पर दूरस्थ क्रैश और संभावित RCE को सक्षम बनाता है।

रिपॉजिटरी देखें
6411 साल पहलेKitploit द्वारा समीक्षित
वेबसाइट

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

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

Mario Kart 8 Deluxe के "KartLANPwn" स्टैक-आधारित बफ़र ओवरफ़्लो भेद्यता के लिए जानकारी और प्रूफ-ऑफ-कॉन्सेप्ट
चैड हयात द्वारा लिखित

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" स्यूडोकोड
  • प्रूफ-ऑफ-कॉन्सेप्ट
    • PoC का प्रदर्शन
  • समापन विचार
  • क्रेडिट्स
  • रिपोर्ट समयरेखा
  • लाइसेंस

पृष्ठभूमि जानकारी

KartLANPwn Mario Kart 8 Deluxe में Pia P2P नेटवर्किंग लाइब्रेरी के गलत उपयोग में एक भेद्यता है, जिसमें "[CopyAppData](#lan_copyappdata-pseudocode)" के अलग-अलग कार्यान्वयन कभी-कभी स्वयं out बफ़र से बड़े outBufSize के साथ कॉल किए जाते हैं। यह संभावित रूप से जानकारी लीक के साथ श्रृंखलाबद्ध होने पर सहकर्मी कंसोल पर उपयोगकर्ता-मोड रिमोट कोड निष्पादन (RCE) का कारण बन सकता है। KartLANPwn Pia के LAN/LDN मल्टीप्लेयर और NEX ऑनलाइन मल्टीप्लेयर के कार्यान्वयन को प्रभावित करता है।

यह भेद्यता v3.0.1 तक (चीन/टेनसेंट के लिए v3.0.2) Mario Kart 8 Deluxe के सभी संस्करणों को प्रभावित करती है, और विशेष रूप से MK8DX के v3.0.1 रिटेल रिलीज़ पर "LAN Play" सुविधा के माध्यम से प्रदर्शित किया गया.

2024/09/11 तक, निन्टेंडो ने चीन को छोड़कर सभी क्षेत्रों के लिए v3.0.3 के साथ KartLANPwn के लिए एक फिक्स तैनात किया है। 2024/09/27 तक, v3.0.3 अब चीन के लिए भी जारी किया गया है। हमने निन्टेंडो से अनुमति प्राप्त करने के बाद सुरक्षित रूप से इस जानकारी का खुलासा किया है।

परिचय

मालिकाना Pia नेटवर्किंग लाइब्रेरी का उपयोग प्रथम-पक्ष निन्टेंडो स्विच गेम्स द्वारा स्थानीय या ऑनलाइन-प्ले समर्थन के साथ LAN/LDN (स्थानीय मल्टीप्लेयर) और ऑनलाइन मल्टीप्लेयर के लिए उपयोग किए जाने वाले NEX प्रोटोकॉल के लिए पीयर-टू-पीयर नेटकोड कार्यान्वयन प्रदान करने के लिए किया जाता है।

प्रदर्शन के लिए, हम विशेष रूप से Pia के LAN प्रोटोकॉल पर ध्यान केंद्रित करेंगे। रूम होस्ट का कंसोल स्थानीय ब्रॉडकास्ट पते (255.255.255.255) पर :30000 पर एक UDP "डिस्कवरी" सॉकेट खोलता है, और उसी नेटवर्क पर अन्य कंसोल को अपने स्वयं के सॉकेट (:30000 पर भी) से राउटर को "ब्राउज़ अनुरोध" विज्ञापित करना चाहिए ताकि उन्हें उसी नेटवर्क पर अन्य उपकरणों को अग्रेषित किया जा सके।

रूम होस्ट (हमारा 'सर्वर') एक प्रारंभिक "ब्राउज़ रिप्लाई" वापस भेजता है जिसमें कमरे के बारे में जानकारी (होस्ट का प्रदर्शन नाम, Mii डेटा, खिलाड़ियों की संख्या, आदि) होनी चाहिए। ब्राउज़-रिप्लाई पैकेट के भीतर, out बफ़र में कॉपी किए जाने वाले एप्लिकेशन डेटा की लंबाई को 150 तक के मान से नियंत्रित किया जा सकता है, भले ही out केवल 128 बाइट चौड़ा हो। यह स्टैक फ्रेम पर मानों को ओवरफ्लो करने की अनुमति देता है (इस विशिष्ट मामले में, pop {r4-r8, pc} के लिए)

LAN प्रोटोकॉल (ब्राउज़-रिप्लाई पैकेट)

कम से कम MK8DX द्वारा उपयोग किए जा रहे Pia संस्करण के मामले में, हम जिस पर ध्यान केंद्रित कर रहे हैं, उसके लिए LAN के लिए ब्राउज़-रिप्लाई पैकेट निम्नानुसार बनाए जाते हैं:

(सभी int प्रकार बिग-एंडियन के रूप में एन्कोड किए गए हैं)

इंडेक्सस्यूडो-प्रकारविवरण
0u8पैकेट प्रकार (0x1)
1u32सत्र जानकारी बॉडी का आकार (हमारे मामले में 1266)
5(42 बाइट्स)विभिन्न सत्र जानकारी फ़ील्ड, हमारे लिए अप्रासंगिक
47(0x180 बाइट्स)एप्लिकेशन डेटा के लिए स्थान की शुरुआत
431u32एप्लिकेशन डेटा की लंबाई

बाकी सत्र जानकारी अनुसरण करती है, हालांकि KartLANPwn के लिए पैकेट तैयार करने के लिए महत्वपूर्ण नहीं है

"LAN_CopyAppData" स्यूडोकोड

प्रदर्शन के लिए, नीचे LAN कार्यान्वयन के "CopyAppData" से मोटा स्यूडोकोड है। जबकि इस फ़ंक्शन में अकेले कुछ भी गलत नहीं है, गलत उपयोग (MK8DX के मामले में) हमारे इनपुट एप्लिकेशन डेटा packet द्वारा स्टैक फ्रेम को ओवरराइट करने की अनुमति दे सकता है।

(MK8DX v3.0.1 के लिए main में फ़ंक्शन स्थान @ +0xA0F8C0)

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

    if (out != NULL) {
        // हमारे एप्लिकेशन डेटा की शुरुआत में `packet` बफ़र से पढ़ने की वास्तविक लंबाई
        // (जिसे हमारा 'सर्वर' नियंत्रित करता है)
        uint appDataLength = *(uint *)(packet + 432);

        // कुछ मामलों में, outBufSize को `out` बफ़र की सीमा से बड़ी संख्या के रूप में इनपुट किया जाता है,
        // जो स्टैक बफ़र ओवरफ़्लो की अनुमति देता है (हमारे विशिष्ट मामले में, `*out`
        // 128 बाइट लंबा है, और outBufSize 150 है!)
        if (appDataLength <= outBufSize) {
            memcpy(out, packet + 48, outBufSize); // packet[47], एप्लिकेशन डेटा की शुरुआत

            u1 = 0;
        }

        *r0 = u1;
        return;
    }

    *r0 = 68615;
    return;
}

प्रूफ-ऑफ-कॉन्सेप्ट

kartlanpwn-poc.py देखें

हमने Python में लिखा एक सरल PoC स्क्रिप्ट प्रदान की है, जो एक नकली कमरा होस्ट के रूप में कार्य करता है जो साथियों के कंसोल को एक विशेष रूप से तैयार किए गए "ब्राउज़-रिप्लाई" पैकेट के साथ उत्तर देता है जो MK8DX में "LAN Play" मेनू खोलने पर गेम की प्रक्रिया को क्रैश कर देगा जब कंसोल उसी नेटवर्क पर हो जहां स्क्रिप्ट चलाने वाला कंप्यूटर है।

आवश्यकताएँ

  • Python 3 का एक हालिया संस्करण

या तो GitHub से सीधे रेपो का ज़िप डाउनलोड करें, या git का उपयोग करके क्लोन करें:

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

PoC का प्रदर्शन

वीडियो प्रदर्शन देखें (YouTube):

YouTube - KartLANPwn प्रदर्शन (CVE-2024-45200)

और आप ARM के दीवानों के लिए, यहाँ GDB से परिणामी प्रक्रिया segfault का एक स्क्रीनशॉट है:

GDB स्क्रीनशॉट

समापन विचार

बग के विवरण को समझने में केवल कुछ दिन लगे, लेकिन वास्तव में ओवरफ़्लो का उपयोग करना? यह एक पूरी तरह से अलग मामला है। निन्टेंडो स्विच कर्नेल का उपयोगकर्तामोड आसानी से नहीं हारता; यह हर संभव कोने में अत्यंत सख्त है। हमने वास्तविक (मनमाना) कोड निष्पादन के लिए अंततः कोई सफलता नहीं मिलने पर कई घंटे विभिन्न विचारों और सुरागों का आदान-प्रदान और छेड़छाड़ करने में बिताए। हमारे विशिष्ट मामले में, विश्वसनीय ROP भी बहुत संभव नहीं लग रहा था, क्योंकि लगभग सभी संबंधित नेटवर्किंग कार्य क्लास-आधारित थे, साथ ही हमारे पास केवल r4-r8 पर सीधा लेखन अभिगम था। (*_this मेरा प्रिय) इसके अलावा, पिछली जानकारी लीक के बिना, _this पॉइंटर को नियंत्रित करने के लिए mov r4, r0 या ऐसा कुछ छोड़ना बहुत संभव नहीं है। मजेदार बातें!

रिपोर्ट के संदर्भ में, इस बार निन्टेंडो ट्राइएज के साथ रिपोर्ट से खुलासे तक सब कुछ काफी सुचारू था। जबकि $512 का बाउंटी भुगतान मेरी अपेक्षा से कहीं कम था (क्या वे सभी नहीं हैं?), "निन्टेंडो निन्जा" के मेरे दरवाजे पर आने से कुछ भी बेहतर है।

निन्टेंडो ने निश्चित रूप से Wii, 3DS, और यहां तक कि Wii U के सरल दिनों से सबक सीखा। उन्होंने अपना होमवर्क किया; स्विच पर उपयोगकर्तामोड से डिनायल-ऑफ-सर्विस क्रैशिंग से परे किसी भी प्रकार का सफल शोषण लगभग असंभव है। ASLR, बाध्यकारी No-eXecute पृष्ठ (आप निष्पादन योग्य मेमोरी पृष्ठों पर सीधे नहीं लिख सकते, गेम्स को JIT के लिए समर्पित sysmodule का उपयोग करने की आवश्यकता है!), ROP करने में असमर्थता, और अन्य दर्द बिंदु। (संशोधन समुदाय द्वारा इन शब्दों को जल्द ही निगलने की प्रतीक्षा कर रहा है..) दूसरी ओर, पिछले कुछ महीनों में, मैंने बहुत कम समय में एक पूरी तरह से नए प्लेटफॉर्म और आर्किटेक्चर (मेरे लिए वैसे भी) के बारे में बहुत कुछ सीखा है, KartLANPwn पर मेरे साथ काम करने वाले शानदार लोगों का उल्लेख नहीं करना चाहता! (पाब्लो और फिशगाय को धन्यवाद 😄)

क्रेडिट्स

  • खोजकर्ता: चैड हयात
  • बड़ी मदद और बहुत धन्यवाद: PabloMK7, fishguy6564
  • भावनात्मक समर्थन 🙃: Justus, Sky

रिपोर्ट समयरेखा

दिनांकजानकारी
2024/07/18HackerOne के माध्यम से निन्टेंडो को रिपोर्ट प्रस्तुत की गई
2024/07/31रिपोर्ट आंतरिक रूप से ट्राइएज की गई
2024/09/11चीन को छोड़कर सभी क्षेत्रों के लिए Mario Kart 8 Deluxe v3.0.3 के साथ फिक्स जारी किया गया
2024/09/12निन्टेंडो द्वारा बाउंटी का भुगतान किया गया
2024/09/12अन्य शोधकर्ताओं ने बहुत जल्दी v3.0.3 के लिए बाइंडिफ में "एक सुरक्षा दोष" के फिक्स के बारे में पता लगाया
2024/09/27चीनी क्षेत्र के लिए Mario Kart 8 Deluxe v3.0.3 जारी किया गया
2024/09/29निन्टेंडो ने खुलासे की अनुमति दी, यह रिपॉजिटरी सार्वजनिक की गई
2024/09/30CVE-2024-45200 NVD द्वारा प्रकाशित किया गया

लाइसेंस

CC BY 4.0

KartLANPwn © 2024 CC BY 4.0 के अंतर्गत लाइसेंस प्राप्त है।
इस लाइसेंस की एक प्रति देखने के लिए, https://creativecommons.org/licenses/by/4.0/ पर जाएं


Evil LAN-play error..
टूल डाउनलोड करें