एक अलग पहले हमले में, लगभग 25 मिनट में करीब 500 सिंगल-सिग्नेचर वॉलेट से 594 BTC (~$38 मिलियन) चुराए गए । Galaxy Research, Chainalysis और Block की इंजीनियरिंग टीम ने स्वतंत्र रूप से इन चोरियों को Coldcard की कमज़ोरी से जोड़ा ।
Block की Bitcoin इंजीनियरिंग और सुरक्षा टीम के इंजीनियर क्ले गैरेट के अनुसार, हैकर ने एक प्रसिद्ध ब्लॉकचेन-सर्विसेज़ प्रदाता के पेड अकाउंट का इस्तेमाल कमज़ोर वॉलेट की पहचान करने और उनके एड्रेस को क्वेरी करने के लिए किया । जांचकर्ताओं को हैकर के ऑन-चेन पैटर्न से यह संदेह हुआ, जिसमें एक ही कमज़ोरी वाले एड्रेस को बहुत तेज़ी से और लगातार टार्गेट किया गया था । गैरेट ने इसे "असाधारण विशिष्टता, अकाउंट स्तर तक" बताया । इस सेवा ने हैकर को एक रिकॉनिसेंस टूल की तरह काम दिया, जिससे वह सबसे अमीर वॉलेट को प्राथमिकता दे सका ।
यह बग मार्च 2021 के फर्मवेयर कमिट (Mk3 फर्मवेयर v4.0.1 से शुरू) में Bitcoin Core की libsecp256k1 लाइब्रेरी में माइग्रेशन के दौरान आया । एक बिल्ड-कंफ़िगरेशन मैक्रो एरर के कारण फर्मवेयर ने डिवाइस के समर्पित STM32 हार्डवेयर रैंडम नंबर जनरेटर (TRNG) को बायपास कर दिया और MicroPython के डिटर्मिनिस्टिक Yasmarang सॉफ्टवेयर RNG का उपयोग करने लगा ।
प्रोडक्शन बोर्ड कॉन्फ़िगरेशन ने MICROPY_HW_ENABLE_RNG को जीरो पर सेट किया था क्योंकि Coldcard का अपना एक अलग हार्डवेयर-RNG रैपर था। लेकिन libngu लाइब्रेरी ने इस मैक्रो की जांच गलत तरीके से की: उसका गार्ड कंडीशन (#ifndef MICROPY_HW_ENABLE_RNG) सिर्फ यह चेक करता था कि मैक्रो डिफ़ाइन है या नहीं, न कि उसकी वैल्यू क्या है । चूंकि मैक्रो डिफ़ाइन था (भले ही वैल्यू जीरो थी), libngu ने सोचा कि हार्डवेयर पाथ उपलब्ध है और MicroPython के सॉफ्टवेयर-आधारित rng_get() फंक्शन को बाइंड कर दिया ।
इससे सीड की एंट्रॉपी सिर्फ 32-40 बिट्स (128+ बिट्स के बजाय) रह गई, जिसका मतलब था कि केवल 4 अरब संभावित सीड वैल्यू थीं, जिन्हें आधुनिक हार्डवेयर से आसानी से क्रैक किया जा सकता था । जिन सीड्स को बिना यूज़र-एडेड डाइस रोल या BIP 39 पासफ़्रेज़ के जनरेट किया गया था, वे पूरी तरह से असुरक्षित थे ।
Coinkite के CEO Rodolfo Novak (NVK) ने बाद में इस गलती को स्वीकार किया: "मैंने MICROPY_HW_ENABLE_RNG को जीरो पर सेट किया था, यह सोचकर कि हमें किसी भी वर्ज़न की ज़रूरत नहीं है, लेकिन यह वैसे काम नहीं करता" ।
| प्रभावित | अप्रभावित |
|---|---|
| Coldcard Mk3, फर्मवेयर 4.0.1 से 5.0.3 | Mk4, Q, Mk5 (Coinkite की शुरुआती जांच के अनुसार) |
| बिना यूज़र डाइस रोल या BIP 39 पासफ़्रेज़ के जनरेट किए गए सीड | यूज़र द्वारा डाइस रोल या पासफ़्रेज़ वाले सीड |
Coinkite ने बाद में अपनी एडवाइज़री को कुछ Mk4, Mk5 और Q फर्मवेयर वर्ज़न तक बढ़ा दिया और सभी प्रभावित मॉडलों के लिए इमरजेंसी फर्मवेयर अपडेट जारी किए ।
इस एक्सप्लॉइट ने स्व-संरक्षण के मूलभूत वादों में से एक को हिला कर रख दिया है — कि हार्डवेयर वॉलेट का सिक्योर एलिमेंट सॉफ्टवेयर बग्स के बावजूद क्रिप्टोग्राफ़िक सुरक्षा की गारंटी देता है ।
विस्तृत तकनीकी जानकारी के लिए, Block का इंजीनियरिंग रिपोर्ट और Coinkite का तकनीकी बैकग्राउंडर देखें।