जेफिरनेट लोगो

ट्रस्ट वॉलेट ब्राउज़र एक्सटेंशन के साथ बनाए गए प्रत्येक वॉलेट का फंड बिना किसी उपयोगकर्ता सहभागिता के चोरी हो सकता है खाता बही

दिनांक:

जानने योग्य बातें:
– ट्रस्ट वॉलेट का सीड जनरेशन त्रुटिपूर्ण था, कुल एंट्रॉपी केवल 32 बिट्स थी। हमने एक फाइल बनाई है जिसमें सभी संभव बीज हैं।

- सौभाग्य से, लेजर डोनजोन ने बहुत जल्दी भेद्यता की खोज की और क्रिप्टो पारिस्थितिकी तंत्र में सबसे बड़ी हैक में से एक से बचने की संभावना है।

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

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

वॉलेट कैसे बनते हैं

एंट्रॉपी पीढ़ी मुश्किल है। वैज्ञानिकों के रूप में, हम पुनरुत्पादन को पसंद करते हैं और कारण और प्रभाव सिद्धांतों के साथ घटना की व्याख्या करने में सक्षम हैं। तो, आम तौर पर यादृच्छिकता उत्पन्न करना कठिन होता है। इसके अलावा, यह प्रदर्शित करना कठिन है कि यादृच्छिक संख्याएँ सही हैं, और एक खराब लेकिन अंतिम रूप से त्रुटिपूर्ण यादृच्छिक संख्या जनरेटर पर्यवेक्षक को आसानी से मूर्ख बना सकता है। अच्छी यादृच्छिकता के लिए, हमें बिट्स और बाइट्स (और यहां तक ​​​​कि सभी चंक्स आकार), और अप्रत्याशितता के समान वितरण की आवश्यकता है। अनुक्रम के पर्यवेक्षक के लिए, उत्पन्न होने वाले अनुक्रम के अगले भाग पर कोई जानकारी होना असंभव होना चाहिए।

जैसा कि इन गुणों को प्राप्त करना अविश्वसनीय रूप से कठिन है, क्रिप्टोक्यूरेंसी स्थान यथासंभव यादृच्छिकता पर भरोसा करने से बचने की कोशिश करता है - लेकिन हमें अभी भी एक चरण में इसकी आवश्यकता है: जब हम एक नया वॉलेट बनाते हैं।

आप शायद पहले से ही अपने स्मरक से परिचित हैं, 12 से 24 अंग्रेजी शब्द जो आपको अपने बटुए का बैकअप लेने की अनुमति देते हैं (यदि नहीं, तो आप देख सकते हैं लेजर अकादमी इसी विषय पर लेख)।

यह स्मरक 16 से 32 बाइट्स एंट्रॉपी को एनकोड करता है बीआईपी 39 मानक - इस एन्ट्रापी की गुणवत्ता महत्वपूर्ण है, क्योंकि यह आपके बटुए द्वारा सभी जंजीरों पर उपयोग की जाने वाली सभी चाबियों का बीज होगा, जो कि निर्धारित नियतात्मक व्युत्पत्ति प्रक्रिया द्वारा परिभाषित है। बीआईपी २ और बीआईपी २ मानकों।

यह पदानुक्रमित नियतात्मक योजना आज बहुत अधिक सर्वव्यापी है, यह देखते हुए कि उपयोगकर्ताओं के लिए चाबियों की अनंतता और इसकी पोर्टेबिलिटी का बैकअप बनाना कितना आसान है (बीआईपी 39 "कार्यान्वयन के लिए सर्वसम्मति से निराश" होने के बावजूद)। साइनर रोमिंग एक शक्तिशाली विशेषता है - जब आपका पसंदीदा बटुआ विफल या निराश होता है, तो आप बस अपने स्मरक को अपने साथ ले जा सकते हैं (या इससे भी बेहतर, आपका लेजर डिवाइस), दूसरे पर स्विच कर सकते हैं, अपनी वित्तीय स्वतंत्रता बनाए रख सकते हैं और इसके डाउनटाइम के किसी भी प्रभाव को सीमित कर सकते हैं।

लेकिन फिर से, इसके लिए एक दोषरहित एन्ट्रॉपी स्रोत की आवश्यकता होती है।

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

ट्रस्ट वॉलेट पर निर्भर करता है ट्रस्ट वॉलेट कोर, एक क्रॉस-प्लेटफ़ॉर्म लाइब्रेरी जो कई ब्लॉकचेन के लिए निम्न-स्तरीय क्रिप्टोग्राफ़िक वॉलेट कार्यक्षमता लागू करती है। यह मोबाइल-केंद्रित था, लेकिन यह अप्रैल 2022 से वासम को भी लक्षित करता है (देखें #2132).

जबकि अधिकांश ट्रस्ट वॉलेट कोर पोर्टेबल है, कुछ मॉड्यूल और फ़ंक्शन लक्ष्य के लिए बहुत विशिष्ट हैं। यह विशेष रूप से सुरक्षित यादृच्छिक पीढ़ी के हिस्से के लिए मामला है, जिसका उपयोग क्रिप्टोग्राफ़िक सामग्री जैसे कि निजी कुंजी और एचडी वॉलेट के लिए स्मरक बनाने के लिए किया जाता है। प्रत्येक कार्यान्वयन ऑपरेटिंग सिस्टम द्वारा प्रस्तावित छद्म यादृच्छिक संख्या जनरेटर (पीआरएनजी) का लाभ उठाता है:

  • आईओएस के लिए, SecRandomCopyBytes प्रयोग किया जाता है।
  • एंड्रॉइड के लिए, एंट्रॉपी एक उदाहरण द्वारा प्रदान की जाती है java.security.SecureRandom.

यह आमतौर पर एक अच्छा अभ्यास है, क्योंकि ऐसे प्रिमिटिव को सुरक्षित माना जाता है।

वासम बैकएंड

वास लक्ष्य के साथ अंतर है। यह मॉड्यूल कई वातावरणों पर चल सकता है, जैसे कोई भी ब्राउज़र जो वासम, या Node.js का समर्थन करता है। ये प्लेटफॉर्म एक सामान्य मजबूत पीआरएनजी प्रदान नहीं करते हैं, और कोई इन वातावरणों से "क्लासिक" सिस्टम इंटरफेस तक पहुंच प्राप्त नहीं कर सकता है। उदाहरण के लिए, लिनक्स के लिए क्रोम में चल रहे वासम मॉड्यूल को सीधे नहीं पढ़ा जा सकता है /dev/urandom.

इससे निपटने के लिए, एक समर्पित तथाकथित "सुरक्षित यादृच्छिक जनरेटर" को लागू किया गया है #2240. यह emscripten में बने PR पर आधारित है (देखें PR #12240 emscripten में) पढ़ने से बचने के लिए सटीक लिखा गया है /dev/urandom.

लेखक के अनुसार:

हम यहां जो करते हैं वह सरल है, हम लपेटते हैं std::random_device साथ में std::mt19937 और प्रेरित होकर एक यादृच्छिक uint32 मान लौटाएँ एम्सस्क्रिप्टेन-कोर/एम्सस्क्रिप्टेन#12240.

यहां एक महत्वपूर्ण समस्या है, जो वासम के लिए और उस पर निर्भर किसी भी उत्पाद के लिए वॉलेट-कोर के लिए एक महत्वपूर्ण भेद्यता की ओर ले जाती है: प्रयुक्त पीआरएनजी एक मेर्सेन ट्विस्टर है, और इसे क्रिप्टोग्राफ़िक उद्देश्यों के लिए उपयोग नहीं किया जाना चाहिए। इसके अलावा, विशेष संस्करण mt19937 इनपुट बीज के रूप में एक 32-बिट मान लेता है।

यहाँ क्या परिणाम हैं? वास के लिए कस्टम रैंडम मॉड्यूल दो कार्यों को लागू करता है: random32 जो 32-बिट यादृच्छिक मान आउटपुट करता है, और random_buffer जो यादृच्छिक डेटा के साथ मनमाना आकार का बफर भरता है। वॉलेट कोर प्रोजेक्ट में, इन कार्यों का विशेष रूप से ट्रेजर-क्रिप्टो द्वारा उपयोग किया जाता है, ट्रेजर द्वारा विकसित क्रिप्टोग्राफिक लाइब्रेरी उनके हार्डवेयर वॉलेट पर सुरक्षित क्रिप्टोग्राफी सुनिश्चित करने के लिए।

अब देखते हैं कि एचडी वॉलेट कैसे जनरेट किए जाते हैं:

  • एंट्रीपॉइंट एचडीवॉलेट है। इसे बाद में सुरक्षित करने के लिए एक शक्ति और पासफ़्रेज़ की आवश्यकता होती है:

https://github.com/trustwallet/wallet-core/blob/3.1.0/src/HDWallet.cpp#L45

यह तब कार्य करता है mnemonic_generate BIP-39 स्मरक बनाने के लिए:

https://github.com/trustwallet/wallet-core/blob/3.1.0/trezor-crypto/crypto/bip39.c#L55

mnemonic_generate कॉल random_buffer, जो Mersenne ट्विस्टर PRNG का उपयोग करके भरे हुए एक यादृच्छिक बफ़र को आउटपुट करता है, जिसका उदाहरण अभी-अभी सीड किया गया है:

https://github.com/trustwallet/wallet-core/blob/3.1.0/wasm/src/Random.cpp#L19

चूंकि बीज सिर्फ 32 बिट्स है, वॉलेट-कोर का वासम संस्करण केवल 2 ^ 32 (~ 4 बिलियन) संभव निमोनिक्स बनाने की अनुमति देता है। इन सभी mnemonics को एक ही कंप्यूटर में कुछ घंटों में उत्पन्न किया जा सकता है।

वहां से, एक हमलावर सक्षम है:

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

इस तरह के हमले को चलाने में कुछ घंटों से अधिक समय लगता है, लेकिन कुछ जीपीयू के साथ एक दिन से भी कम समय में संभव है (देखें मीडियम.com/@johncantrell97/how-i-checked-over-1-tillion-mnemonics-in-30-hours-to-win-a-bitcoin लागत अनुमान के लिए। यहां हमला 256 गुना आसान है)।

ट्रस्ट वॉलेट ब्राउज़र एक्सटेंशन के लिए आवेदन

RSI ट्रस्ट वॉलेट ब्राउज़र एक्सटेंशन क्रोमियम-आधारित ब्राउज़रों के लिए एक एक्सटेंशन है। यह स्पष्ट रूप से एक मेटामास्क प्रतियोगी है, और इसे "सुरक्षित मल्टी-चेन क्रिप्टो वॉलेट और हजारों वेब 3 विकेन्द्रीकृत अनुप्रयोगों (डीएपी) के प्रवेश द्वार" के रूप में ब्रांडेड किया गया है।

एक्सटेंशन बंद-स्रोत है, लेकिन इसके कोड का आसानी से विश्लेषण किया जा सकता है। यह ट्रस्ट वॉलेट कोर के कमजोर वासम कार्यान्वयन पर निर्भर करता है।

जब एक वॉलेट बनाया जाता है, तो एक्सटेंशन एक यादृच्छिक 12-बिट बीज से 128-शब्द स्मरक बनाता है। स्मृति चिन्ह इस प्रकार उत्पन्न होता है:

HDWallet.create ऊपर वर्णित HDWallet कंस्ट्रक्टर के लिए ऑटो-जेनरेट किया गया वास रैपर है। यानी कमजोर random_buffer फ़ंक्शन का उपयोग किया जाता है, इसलिए ब्रूट फ़ोर्स अटैक के साथ उपयोगकर्ता के पते से mnemonics को पुनर्प्राप्त किया जा सकता है।

यह एक्सटेंशन निम्नलिखित संपत्तियों को संभालता है: AVAX, BNB, ETH, MATIC, SOL और TWT।

  • ETH, BNB, MATIC, AVAX और TWT के पते समान हैं। ये मानक एथेरियम पते हैं, समान व्युत्पत्ति पथ साझा करते हैं (m/44'/60'/0'/0/0)।
  • सोलाना एक अलग व्युत्पत्ति पथ का उपयोग करता है: m/44'/501'/0'/0'।

सभी ट्रस्ट वॉलेट एक्सटेंशन उपयोगकर्ताओं के धन की निकासी के लिए, हमलावर कर सकते हैं:

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

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

ट्रस्ट वॉलेट पर हमला

भेद्यता एक हमलावर को ब्राउज़र एक्सटेंशन द्वारा बनाए गए बटुए के किसी भी पते से स्मरक की गणना करने की अनुमति देती है। उसके लिए, संभावित निमोनिक्स और परिणामी पते के बीच एक मैपिंग की गणना करने की आवश्यकता है।

ट्रस्ट वॉलेट एक्सटेंशन द्वारा बनाए जा सकने वाले सभी पते जनरेट करना

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

एन्ट्रॉपी से मेनेमोनिक तक व्युत्पत्ति फिर एथेरियम पते पर मानक व्युत्पत्ति तंत्र का उपयोग करता है BIP -32BIP -39, और BIP -44 खाता पदानुक्रम।

इन सभी पतों को गिनने में पहली कठिनाई थी। PRNG बीज से पते में रूपांतरण के लिए निम्नलिखित चरणों की आवश्यकता होती है:

  • एंट्रॉपी पीढ़ी: मेर्सन ट्विस्टर को बीज के साथ प्रारंभ करें, और प्रारंभिक एंट्रॉपी एकत्र करने के लिए इसे 16 बार कॉल करें।
  • स्मरक के लिए एंट्रॉपी: अंतिम शब्द में एम्बेड किए गए अंतिम चेकसम की गणना करने के लिए एक SHA-256।
  • बीज के लिए स्मरक: स्मरक को 512 पुनरावृत्तियों के साथ PKBDF2-HMAC-SHA512 का उपयोग करके 2048-बिट बीज में परिवर्तित किया जाता है। प्रति पुनरावृत्ति 2 SHA-512 संगणनाएँ हैं, इसलिए कुल लागत 4096 SHA-512 संगणनाएँ हैं।
  • बीज से बीआईपी-32 मास्टर कुंजी: 1 HMAC SHA-512 की लागत 2 SHA-512 संगणनाएँ।
  • एथेरियम निजी कुंजी के लिए मास्टर कुंजी: मास्टर कुंजी m/44'/60'/0'/0/0 पर ली गई है। इसके लिए 3 कठोर बाल निजी कुंजी व्युत्पत्तियों और 2 सामान्य बाल कुंजी व्युत्पत्तियों की आवश्यकता होती है।
    • प्रत्येक कठोर बाल निजी कुंजी व्युत्पत्ति के लिए एक HMAC SHA-512 (2 SHA-512) गणना और secp256k1 पर एक जोड़ की आवश्यकता होती है।
    • प्रत्येक सामान्य बाल निजी कुंजी व्युत्पत्ति के लिए एक चाइल्ड निजी कुंजी व्युत्पत्ति की आवश्यकता होती है, और इनपुट में प्रदान की गई निजी कुंजी को सार्वजनिक कुंजी में बदलने के लिए secp256k1 पर एक स्केलर गुणन की आवश्यकता होती है।
  • पता करने के लिए एथेरियम निजी कुंजी: इस अंतिम चरण के लिए एक निजी से सार्वजनिक कुंजी रूपांतरण की आवश्यकता होती है, इसलिए एक और स्केलर गुणन, और एक केकेक-256 हैश।

इन सभी चरणों के लिए कुल लागत तब है:

  • मेर्सन ट्विस्टर को आरंभीकरण और 16 कॉल
  • 1 एसएचए-256
  • 4108 एसएचए-512
  • 5 बिंदु जोड़
  • secp2k256 पर 1 अदिश गुणन

सबसे महंगे चरण SHA-512 संगणनाएँ और अदिश गुणन हैं। इसे छोटा करने के लिए, PRNG सीड को एथेरियम एड्रेस में बदलने की समग्र प्रक्रिया धीमी है। एक एकल सीपीयू पर इस तरह की गणना को चलाने में महीनों लगेंगे, और शायद डोनजोन में उपलब्ध सीपीयू पर कई सप्ताह लगेंगे। इसलिए, हमने इसे OpenCL (पर आधारित) का उपयोग करके लागू किया BIP39 सॉल्वर जीपीयू) और इसे 2 NVIDIA GeForce GTX 1080 Ti GPU पर चलाया।

इस टूल का आउटपुट एक बड़ी फ़ाइल है जिसमें सभी एथेरियम पते हैं जो एक्सटेंशन उत्पन्न कर सकते हैं। जैसा कि 2^32 संभावित बीज हैं, और प्रत्येक पता 20-बाइट लंबा है, यह तालिका 80 Gb लेती है।

वहां से, टेबल लुकअप धीमा है: एक पते से मिलान करने के लिए, इस बड़ी तालिका के माध्यम से इसे फिर से शुरू करने की आवश्यकता होगी।

इन लुकअप को गति देने के लिए, हम एथेरियम पते के पहले बाइट के अनुसार तालिका को 256 छोटी तालिकाओं में विभाजित करते हैं। प्रत्येक तालिका में PRNG बीजों के जोड़े और उनके परिणामी एथेरियम पते शामिल हैं।

अंत में, प्रत्येक तालिका में तेजी से खोज करने में सक्षम होने के लिए, हमने उन्हें एथेरियम पते के अनुसार क्रमबद्ध किया। अब इन तालिकाओं पर बाइनरी खोज करना संभव है: इन क्रमबद्ध तालिकाओं पर लुकअप बहुत सस्ता है।

कुछ डिस्क स्थान बचाने के लिए, हमने PRNG बीज और प्रत्येक एथेरियम पते के केवल पहले 8 बाइट्स संग्रहीत किए। पिछले 12 बाइट जरूरी नहीं हैं, क्योंकि मेरे उपयोग-मामले में टकराव नगण्य हैं। प्रत्येक प्रविष्टि तब 12 बाइट्स लेती है। पूरे टेबल तो 48 जीबी लेते हैं।

यहां प्रत्येक चरण के लिए समय दिया गया है:

इन तालिकाओं का उपयोग करके, पता उत्पन्न करने के लिए उपयोग किए जाने वाले स्मरक को तुरंत पुनर्प्राप्त करना संभव है। भेद्यता के प्रभाव का आकलन करने के लिए, बिनेंस ने मुझसे उनके द्वारा प्रदान किए गए 3 परीक्षण पतों के स्मरक के बारे में पूछा। यहाँ परिणाम है:

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

सभी उपयोग किए गए एथेरियम पतों को सूचीबद्ध करना

हम जो चाहते हैं वह कमजोर बटुए की वास्तविक संख्या और उनकी शेष राशि का अनुमान लगाना है। यह आसान लगता है, क्योंकि सभी लेन-देन सार्वजनिक हैं, इसलिए सभी पते ब्लॉकचेन पर उपलब्ध हैं। हालाँकि, उपयोग किए गए पतों की सूची को सीधे पुनर्प्राप्त करने का कोई तरीका नहीं है।

हमने एक ऐसा तरीका लागू किया है जो एथेरियम ब्लॉकचैन के हर ब्लॉक के माध्यम से पुनरावृति करता है। हमने सभी लेन-देन के प्रेषक और प्राप्तकर्ता के पते और ERC-20 अनुबंधों के लिए प्रत्येक कॉल के पते के पैरामीटर निकाले।

ध्यान दें कि इस पद्धति से, केवल उपयोग किए गए वॉलेट का पता लगाया जा सकता है: कुछ कमजोर वॉलेट जिन्हें संपत्ति प्राप्त नहीं हुई है, उन्होंने कभी भी ब्लॉकचेन के साथ इंटरैक्ट नहीं किया है।

हमने 14820000 और 16096000 ब्लॉक के बीच एथेरियम ब्लॉकचेन को स्कैन किया। ब्लॉक 14820000 21 मई 2022 को बनाया गया था, इसलिए पुल अनुरोध से ठीक पहले ट्रस्ट वॉलेट कोर में कमजोर कोड जोड़ा गया था। 16096000 नवीनतम ब्लॉक था जब मैंने यह पोस्ट लिखा था।

ऐसा लगता है कि सार्वजनिक नोड्स की दर सीमा है, इसलिए मैंने कई दर्जन घंटों के दौरान कुल 147,910,120 पतों को इकट्ठा करने के लिए समानांतर में कई सार्वजनिक नोड्स की पूछताछ की। डुप्लिकेट हटा दिए जाने के बाद, हमें 32,613,317 अद्वितीय पतों की एक सूची प्राप्त होती है।

Binance स्मार्ट चेन के लिए भी इसी तरीके का इस्तेमाल किया गया है। सार्वजनिक बीएससी नोड्स को स्कैन किया गया है।

कमजोर खातों की संख्या का अनुमान लगाना

अंत में, ट्रस्ट वॉलेट एक्सटेंशन द्वारा एक पता बनाया गया है या नहीं, यह जांचने के लिए एक उपकरण लिखा गया है। यह जनरेट की गई तालिकाओं में एक खोज करता है, PRNG बीज प्राप्त करता है, और वहाँ से स्मरक, एथेरियम निजी कुंजी और संबंधित पते की गणना करता है।

गणना बहुत तेज है। I/O को कम करने और नेस्टेड बाइनरी खोज करने के लिए उम्मीदवार के पते पहले से क्रमबद्ध किए गए थे। 32 मिलियन पतों पर लुकअप में साधारण पायथन लिपि का उपयोग करने में कुछ मिनट लगते हैं।

यहाँ एक उदाहरण दिया गया है जिसमें a से लिया गया पता है सार्वजनिक ट्वीट ट्रस्ट वॉलेट एक्सटेंशन की घोषणा का जवाब देना। मैंने इसे एक उदाहरण के रूप में लिया जैसा कि इस पते पर है कभी इस्तेमाल नहीं किया गया, इसलिए उपयोगकर्ता निधि जोखिम में नहीं है।

टूल को ऊपर वर्णित 1,873,720 के डेटासेट पर चलाया गया है। सभी पतों का परीक्षण करने और कमजोर खातों की निजी चाबियों की गणना करने में 4 मिनट 22 सेकंड का समय लगा, इसलिए यह बहुत सस्ता है।

असुरक्षित निजी चाबियों की इस सूची के साथ, सभी संबंधित पतों, उनकी शेष राशि को सूचीबद्ध करना संभव है और स्पष्ट रूप से उन्हें निकालने के लिए... हमारी जांच के दौरान, किसी बिंदु पर लगभग $30 मिलियन जोखिम में थे, लेकिन हमने समय के साथ सभी श्रृंखलाओं और टोकन की निगरानी नहीं की .

उपचार

2022, 17 नवंबर

उनके उपयोग से Binance को भेद्यता की सूचना दी गई है बग बाउंटी कार्यक्रम 2022, 17 नवंबर को।

भेद्यता की पुष्टि करने के लिए, Binance ने हमें 3 पते भेजे और उनसे स्मरक प्रदान करने के लिए कहा:

क्या आप कृपया अपना टूल चलाने का प्रयास कर सकते हैं और इन 3 पतों के लिए स्मरक प्रदान कर सकते हैं?
Wallet 1 – 0xdf6D9547e163D5E7eafBe2FeB24Bfa12A4C913C0
Wallet 2 – 0xE1E0580cb5eA0c0FD034FF2cdfc872ce4493676C
Wallet 3 – 0x02b2Ae981b138F066344774A2AD75225A046c377
धन्यवाद!
सबसे अच्छा संबंध है.

एक बार सभी संभावित पतों की पूर्व-गणना हो जाने के बाद, एक पते से स्मरक को पुनः प्राप्त करना उतना ही सरल है जितना कि 4-बिलियन प्रविष्टियों की तालिका में एक लुकअप। तीन स्मरक 0.2s में पुनर्प्राप्त किए गए हैं:

2022, 21 नवंबर

कुछ दिनों बाद, 21 नवंबर को ट्रस्टवॉलेट टीम सार्वजनिक रूप से प्रतिबद्ध जीथब पर नए त्रुटिपूर्ण बीजों के उत्पादन से बचाव को ठीक करें। हम काफी चिंतित थे कि कोई इसे नोटिस करेगा और भेद्यता का फायदा उठाएगा।

एक्सएनयूएमएक्स, नवंबर

ट्रस्टवॉलेट टीम ने अपने उपयोगकर्ताओं को चेतावनी देने के लिए ऐप को अपडेट किया, उन्हें नए त्रुटिपूर्ण बीज उत्पन्न करने से रोका और प्राप्त प्रवाह को हटा दिया।

वहां से, हमने स्थिति और जोखिम वाले फंडों की निगरानी की। इस कमजोर बटुए को जारी करने के कुछ ही दिनों बाद, लगभग $30 मिलियन जोखिम में थे।

एक्सएनयूएमएक्स, मार्च 

Trustwallet टीम ने हमें उनके द्वारा प्रदान किया जाने वाला उच्चतम इनाम दिया: $100k

2023, 22 अप्रैल

उपयोगकर्ताओं द्वारा अपने धन को स्थानांतरित करने के महीनों के इंतजार के बाद, ट्रस्टवॉलेट टीम ने भेद्यता का खुलासा किया और एक लिखा पोस्टमार्टम. अभी तक, अभी भी शेष धनराशि वाले वॉलेट हैं जिन्हें चुराया जा सकता है (~$100k)। ट्रस्ट वॉलेट ने चुराए गए धन की प्रतिपूर्ति का वादा किया।

निष्कर्ष

यह भेद्यता एक क्रिप्टो बग की सबसे खराब स्थिति को दर्शाती है - हमेशा के लिए समझौता किए गए खाते।

अच्छी यादृच्छिकता बनाना एक कठिन काम है - लेजर डिवाइस हमारे प्रमाणित स्मार्टकार्ड चिप्स में समर्पित सिलिकॉन लॉजिक पर भरोसा करते हैं जो उच्च गुणवत्ता वाली यादृच्छिकता और छेड़छाड़ प्रतिरोध की गारंटी के लिए पिछले 40 वर्षों से सुरक्षित उद्योगों का स्वर्ण मानक रहा है।

उन खातों के मालिकों से संपर्क करने की जटिलता और सभी प्रकार के विभिन्न सॉफ़्टवेयर और हार्डवेयर वॉलेट पर उन समझौता किए गए खातों का उपयोग करने की संभावना को देखते हुए, ट्रस्टवॉलेट ने अपने उपयोगकर्ताओं के जोखिम को कम करने के लिए बहुत अच्छा काम किया।

(बहुत) (निकट) भविष्य में यह संभावना है कि बॉट उन पतों पर जमा किए गए धन को चुराने के लिए सबसे पहले लड़ेंगे, जैसा कि अतीत में ब्रेन वॉलेट के साथ क्या हुआ था.

दुनिया को बचाने के लिए जीन-बैप्टिस्ट बेड्रून का विशेष धन्यवाद। ट्रस्ट वॉलेट एक्सटेंशन जारी होने के कुछ ही दिनों बाद, लगभग $30 मिलियन जोखिम में थे। यदि एक हमलावर को कुछ महीनों के बाद भेद्यता का पता चलता है तो दुःस्वप्न की स्थिति उत्पन्न हो सकती है।

हमारी जांच के दौरान, हमने यह भी देखा कि कुछ पते कमजोर थे, जबकि वे ट्रस्ट वॉलेट जारी होने से काफी पहले उत्पन्न हुए थे। इसका शायद मतलब है कि यह भेद्यता कुछ अन्य वॉलेट कार्यान्वयनों में मौजूद है जो संबंधित है ...

स्पॉट_आईएमजी

नवीनतम खुफिया

स्पॉट_आईएमजी