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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2021-38297-Go-wasm-Replication | Kitploit
उपकरण/GitHubGitHub/paras98/cve-2021-38297-go-wasm-replication
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणवेब सुरक्षाCTFपेपर और शोधलर्निंग और शिक्षाबाइनरी शोषणलैब और अभ्यास

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

सभी देखें →

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

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

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

सभी उपकरण देखें →
साझा करें
GitHubparas98/cve-2021-38297-go-wasm-replication

CVE-2021-38297-Go-wasm-Replication

रिपॉजिटरी देखें
2 साल पहलेअभी तक समीक्षित नहीं

🚨 CVE-2021-38297 का शोषण: GO Wasm बफर ओवरफ्लो की एक यात्रा 🚨

🌐 भेद्यता का अवलोकन 🌐

WebAssembly (WASM) 🌍, एक अत्याधुनिक बाइनरी निर्देश प्रारूप है, जो आधुनिक वेब ब्राउज़रों में C, C++, Rust, और GO जैसी उच्च-स्तरीय भाषाओं के निर्बाध निष्पादन को सक्षम बनाता है। हालाँकि, CVE-2021-38297 🚩 की खोज ने GO-संकलित WASM बाइनरीज़ के लिए GO की संकलन और लोडिंग प्रक्रिया में एक गंभीर दोष उजागर किया। यह भेद्यता, GO द्वारा प्रदान किए गए JavaScript WASM लोडर (wasm_exec.js) में पाई गई, जो argv तर्क में डेटा के अप्रतिबंधित समावेश की अनुमति देती थी। argv को WASM की रैखिक मेमोरी में संग्रहीत किए जाने के कारण, दुर्भावनापूर्ण हमलावर संभावित रूप से इसका शोषण करके एक बड़े आकार के argv इनपुट के साथ GO-संकलित WASM प्रोग्राम की रैखिक मेमोरी को अधिलेखित कर सकते थे, जिससे अप्रत्याशित और संभावित रूप से खतरनाक परिणाम सामने आते थे। यह भेद्यता GO के 1.17.2 से पहले के संस्करणों में एक महत्वपूर्ण चिंता का विषय थी। संक्षेप में:

  1. फ्रंट-एंड प्रत्येक पोस्ट और उसकी टिप्पणियों को रेंडर करता है।
  2. रेंडरिंग के दौरान, GO WASM मॉड्यूल लोड होता है, जो argv चर के माध्यम से टिप्पणियों और मेमोरी एड्रेस 0x5000 पर पोस्ट को संसाधित करता है।
  3. toLeetSpeak और processSharedVar जैसे फ़ंक्शन क्रमशः टिप्पणी और पोस्ट सामग्री के लिए उपयोग किए जाते हैं।

💻 भेद्य अनुप्रयोग: Vuln-Twitter 💻

अपने प्रूफ ऑफ कॉन्सेप्ट में, हम "Vuln-Twitter" प्रस्तुत करते हैं, जो एक नकली सोशल मीडिया प्लेटफ़ॉर्म है जो पोस्ट और टिप्पणियों के माध्यम से उपयोगकर्ता-जनित सामग्री की अनुमति देता है। डेटा संग्रहण के लिए Node.js वेब सर्वर और SQLite का उपयोग करते हुए, Vuln-Twitter का फ्रंट-एंड गतिशील सामग्री रेंडरिंग के लिए wordprocessor.wasm नामक GO WASM मॉड्यूल के साथ सादे JavaScript का लाभ उठाता है। यह मॉड्यूल, विशेष रूप से, toLeetSpeak जैसी विधियाँ शामिल करता है, जो उपयोगकर्ता इनपुट को एक आकर्षक उपयोगकर्ता अनुभव के लिए शैलीबद्ध "LeetSpeak" में बदल देता है। Vuln twitter UI

बफर ओवरफ्लो का शोषण

हमारी खोज सामग्री रेंडरिंग चरण के दौरान शोषण का एक महत्वपूर्ण बिंदु प्रकट करती है, जहाँ प्रत्येक टिप्पणी GO WASM मॉड्यूल द्वारा रूपांतरण से गुजरती है। एक विशेष रूप से तैयार की गई अत्यधिक बड़ी टिप्पणी भेद्यता को ट्रिगर कर सकती है, जिससे बफर ओवरफ्लो होता है जो मूल पोस्ट सामग्री में हेरफेर करता है, जो एक क्लासिक स्टोर्ड XSS हमले वेक्टर का प्रदर्शन करता है। यह भेद्यता न केवल दुर्भावनापूर्ण डेटा हेरफेर की क्षमता को रेखांकित करती है, बल्कि वेब विकास और WASM अनुप्रयोगों के संदर्भ में सुरक्षित प्रोग्रामिंग प्रथाओं के व्यापक निहितार्थों को भी उजागर करती है। ऐसा करने वाले कोड अनुभाग को देखें:

Rendering Logic

टिप्पणी रेंडर करते समय WASM रैखिक मेमोरी आरेख:

Rendering Logic memory Exploitation flow

शोषण को पुन: उत्पन्न करना

इस भेद्यता का और अधिक अन्वेषण करने के इच्छुक उत्साही और शोधकर्ताओं के लिए, हम GO के एक विशिष्ट भेद्य संस्करण का उपयोग करके शोषण वातावरण को पुन: उत्पन्न करने के विस्तृत चरण प्रदान करते हैं। यह व्यावहारिक दृष्टिकोण भेद्यता की कार्यप्रणाली और संभावित शमन रणनीतियों की गहरी समझ की सुविधा प्रदान करता है। नोट: इसे पुन: उत्पन्न करने के लिए आपको स्थानीय रूप से go संस्करण go1.17.1 स्थापित करना होगा, जो इस परिदृश्य में उपयोग किया गया भेद्य संस्करण है। विशिष्ट go संस्करण स्थापित करने के तरीके के लिए आप आधिकारिक go दस्तावेज़ देख सकते हैं।

अब उपरोक्त परिदृश्य को पुन: उत्पन्न करने का प्रयास करें:

  1. पूरे एप्लिकेशन को सेटअप करने के लिए पहले प्रोजेक्ट को क्लोन करें: git clone [email protected]:gkrishnan724/CVE-2021-38297.git && cd vuln-twitter
  2. सभी निर्भरताओं को स्थापित करने के लिए npm install चलाएँ
  3. npm run resetDB चलाएँ जो डेटाबेस को कुछ पोस्ट और टिप्पणियों के साथ प्रारंभ करेगा।
  4. npm run dev चलाएँ जो स्थानीय सर्वर शुरू करेगा, ब्राउज़र में localhost:3000 खोलें और आपको एक लॉगिन पेज दिखाई देना चाहिए।

अब, एक दुर्भावनापूर्ण खाते से लॉगिन करें, क्रेडेंशियल का उपयोग करें उपयोगकर्ता नाम: I_CANT_HACK, पासवर्ड: hacker, एक बार लॉग इन करने के बाद, आपको कुछ पोस्ट के साथ फ़ीड देखने में सक्षम होना चाहिए।

यह पोस्ट काफी दिलचस्प लगती है:

Amazon: ready 4 black friday? https://www.amazon.com/blackfriday

क्या होगा यदि उपरोक्त तकनीक का उपयोग करके, हम Amazon.com की पोस्ट को अधिलेखित करके एक दुर्भावनापूर्ण लिंक की ओर इंगित कर सकें?

exploit.txt फ़ाइल देखें, इसमें वह टिप्पणी है जो "A" की पैडिंग से भरी हुई है ताकि हम एड्रेस 0x5000 तक सब कुछ अधिलेखित कर दें, अंत में आप पाठ ready for black friday? https://evil.com/blackfriday देख सकते हैं। यदि हम इस पाठ को कॉपी करके उपरोक्त पोस्ट पर टिप्पणी करते हैं। हमें मूल पोस्ट को उपरोक्त पाठ के साथ अधिलेखित करने में सक्षम होना चाहिए।

इसे स्वयं आज़माएँ और देखें :) Exploit

🛠️ पैचिंग और शमन 🛠️

इस भेद्यता की गंभीरता को स्वीकार करते हुए, हम एक व्यापक पैचिंग रणनीति भी रेखांकित करते हैं, जो जोखिम को कम करने के लिए GO के एक अद्यतन और सुरक्षित संस्करण का उपयोग करती है। यह अनुभाग डेवलपर्स और सिस्टम प्रशासकों के लिए ऐसी भेद्यताओं के विरुद्ध अपने अनुप्रयोगों को मजबूत करने के लिए एक मार्गदर्शिका के रूप में कार्य करता है, जो नियमित सॉफ़्टवेयर अद्यतनों और सतर्क सुरक्षा प्रथाओं के महत्व पर जोर देता है।

इस एप्लिकेशन में, मैंने एक पैच स्क्रिप्ट भी प्रदान की है, जो go के एक नए संस्करण का उपयोग करती है:

  1. लक्ष्य npm run patchServer चलाएँ

यह नए संस्करण के साथ go फ़ाइल को पुन: संकलित करना चाहिए और पैच संस्करण के साथ सर्वर शुरू करना चाहिए

अब आपको ध्यान देना चाहिए कि पोस्ट अधिलेखित नहीं हो रही है और यदि आप कंसोल का निरीक्षण करते हैं, तो हमें इसके बजाय एक त्रुटि दिखाई देती है Argument length too long। Patch

💡 निष्कर्ष और विचार 💡

CVE-2021-38297 के शोषण और शमन के माध्यम से हमारी यात्रा WASM के माध्यम से वेब वातावरण में उच्च-स्तरीय प्रोग्रामिंग भाषाओं के एकीकरण द्वारा प्रस्तुत चुनौतियों और अवसरों में मूल्यवान अंतर्दृष्टि प्रदान करती है। यह सॉफ़्टवेयर विकास में सुरक्षा प्रथाओं की एक आलोचनात्मक जांच को प्रेरित करता है, भेद्यता प्रबंधन के लिए एक सक्रिय दृष्टिकोण और सुरक्षित कोडिंग मानकों को अपनाने पर बल देता है। हमारी समझ के आधार पर हम सोचते हैं कि GO रैखिक मेमोरी लेआउट नीचे दर्शाया गया है:

GO memory layout

🎓 प्रस्तुति और शैक्षणिक योगदान 🎓

कार्नेगी मेलन विश्वविद्यालय के छात्रों के रूप में, CVE-2021-38297 की हमारी जाँच साइबर सुरक्षा पर व्यापक शैक्षणिक और व्यावसायिक चर्चा में योगदान करती है, जो सॉफ़्टवेयर सुरक्षा पर उभरती प्रौद्योगिकियों के निहितार्थों पर एक व्यावहारिक केस स्टडी प्रदान करती है। हमारी प्रस्तुति सामग्री, समीक्षा के लिए उपलब्ध, हमारे निष्कर्षों और कार्यप्रणालियों को और स्पष्ट करती है, जो साइबर सुरक्षा समुदाय के बीच संवाद और सहयोग को आमंत्रित करती है।

🌟 श्रेय और योगदान 🌟

यह प्रोजेक्ट सहयोगी अनुसंधान और शैक्षणिक जांच का प्रमाण है, जिसका नेतृत्व छात्रों और शोधकर्ताओं की एक समर्पित टीम द्वारा किया गया है:

  • Paras Saxena (@paras98)
  • Gopala Krishnan (@gkrishnan724)
  • Zhejia Yang (@zildjianpoi)
  • Shubham Kulkarni (@shubhamkulkarni97)
  • Anisha Nilakantan

तकनीकी स्पष्टीकरण

भेद्य अनुप्रयोग: Vuln-Twitter

यह प्रूफ ऑफ कॉन्सेप्ट एक सोशल मीडिया एप्लिकेशन, Vuln-Twitter को प्रदर्शित करता है, जो कई उपयोगकर्ताओं को सामग्री और टिप्पणियाँ पोस्ट करने की अनुमति देता है। Node.js पर निर्मित वेब-सर्वर, पोस्ट और टिप्पणी डेटा संग्रहीत करने के लिए SQLite का उपयोग करता है।

फ्रंट-एंड wordprocessor.wasm नामक GO WASM मॉड्यूल के साथ सादे JS का उपयोग करता है। यह मॉड्यूल toLeetSpeak जैसी विधियों को उजागर करता है, जो इनपुट स्ट्रिंग्स को "LeetSpeak" में बदल देता है (उदाहरण के लिए, "Hello!" "h3ll0!" बन जाता है)।

GO WASM मॉड्यूल LeetSpeak में पोस्ट और टिप्पणियों को रेंडर करने में सहायता करते हैं।

बफर ओवरफ्लो का शोषण

फ्रंट-एंड रेंडरिंग प्रक्रिया के दौरान, सर्वर से पोस्ट और टिप्पणियाँ प्राप्त करते समय, प्रत्येक टिप्पणी GO WASM मॉड्यूल का उपयोग करके "LeetSpeak" में रेंडरिंग से गुजरती है। प्रत्येक पोस्ट की टिप्पणी GO WASM मॉड्यूल लोड करने के बाद argv चर के भाग के रूप में पारित की जाती है।

इसके अलावा, GO मॉड्यूल में processSharedVar() नामक एक विधि मौजूद है, जो एड्रेस 0x5000 पर स्थित स्ट्रिंग को पढ़ने और उसे सरलीकृत भाषण में बदलने के लिए डिज़ाइन की गई है (उदाहरण के लिए, "How are you?" "How r u?" बन जाता है)। मूल पोस्ट को इस विधि द्वारा एक्सेस करने के लिए रैखिक मेमोरी में स्पष्ट रूप से 0x5000 में जोड़ा जाता है, जिससे पोस्ट सामग्री में परिवर्तन होता है।

🔗 स्रोत और आगे का पठन 🔗

CVE-2021-38297 और इसके व्यापक निहितार्थों में गहराई से उतरने में रुचि रखने वालों के लिए, हम आधिकारिक सुरक्षा बुलेटिन से लेकर तकनीकी ब्लॉग और शैक्षणिक पेपर तक, संसाधनों और पठन सामग्री की एक चयनित सूची प्रदान करते हैं। ये सामग्रियाँ भेद्यता, सॉफ़्टवेयर सुरक्षा पर इसके प्रभाव, और वेब अनुप्रयोगों की सुरक्षा और अखंडता सुनिश्चित करने के चल रहे प्रयासों में व्यापक अंतर्दृष्टि प्रदान करती हैं।

  • https://www.ibm.com/support/pages/security-bulletin-ibm-event-streams-affected-potential-buffer-overflow-golang-cve-2021-38297-0
  • https://vulmon.com/vulnerabilitydetails?qid=CVE-2021-38297&scoretype=cvssv3
  • https://pedromarquez.dev/blog/2023/2/node_golang_wasm
  • https://nvd.nist.gov/vuln/detail/CVE-2021-38297
  • https://github.com/golang/go/issues/48797
  • https://github.com/golang/go/commit/f63250238be548b7c6c24ae840541102a5cfef99
  • https://jfrog.com/blog/cve-2021-38297-analysis-of-a-go-web-assembly-vulnerability/
  • https://stackoverflow.com/questions/64763007/why-is-webassembly-safe-and-what-is-linear-memory-model
  • https://webassembly.org/
  • https://hacks.mozilla.org/2019/08/webassembly-interface-types/
  • https://blog.protekkt.com/blog/basic-webassembly-buffer-overflow-exploitation-example
  • https://www.usenix.org/system/files/sec20_slides_lehmann.pdf
  • https://xeiaso.net/talks/wasm-abi/

मूल विकास रिपॉजिटरी : https://github.com/gkrishnan724/CVE-2021-38297

टूल डाउनलोड करें