Coinkite، شرکت پشت Coldcard، یک بهروزرسانی firmware منتشر کرده است که تا زمانی که مالک به صورت دستی تصادفی بودن را وارد نکند، یک seed جدید برای کیف پول تولید نخواهد کرد.
این به این معناست که حداقل ۵۰ بار تاس انداختن، ۱۲۸ بار شیر یا خط انداختن، یا ۶۵ بار فشردن کلید با زمانبندی لازم است، سه هفته پس از آنکه نقصی در تولیدکننده اعداد تصادفی آن، سرمایه مشتریان را در معرض حمله قرار داد.
دو خط دستگاه Coldcard firmware جداگانهای اجرا میکنند، بنابراین این انتشار دو شماره دارد: ۵.۶.۱ برای Mk4 و Mk5 و ۱.۵.۱Q برای Q، مدل بزرگتر با صفحهکلید و اسکنر QR.
بررسی بوت نقص را هدف قرار میدهد
Coinkite اعلام کرد که ورودی کاربر علاوه بر تصادفی بودن دستگاه از STM32 TRNG و هر دو عنصر امنیتی اضافه میشود.
Coldcard طوری ساخته شده بود که فقط از تولیدکننده سختافزاری خود entropy seed را بگیرد، اما Coinkite نقص را به یک خطا در ساخت و لینک نسبت داد که باعث شد تنظیمات مربوط به غیرفعال کردن مسیر نرمافزاری بیاثر بماند و فراخوانی عدد تصادفی به PRNG یاسمارانگ MicroPython ارسال شود، که در مارس ۲۰۲۱ وارد مسیر seed شد.
seedهای آسیبدیده حدود ۷۲ بیت entropy دارند به جای ۱۲۸ بیت مورد انتظار، پس از آنکه ۵۹۴.۵ بیتکوین در ۳۰ ژوئیه از ۵۰۰ آدرس جابجا شد.
Firmware 5.6.1 اکنون هنگام بوت بررسی میکند که فراخوانی عدد تصادفی به مسیر سختافزاری مورد نظر برسد و در صورت شکست، دستگاه را متوقف میکند. Coinkite یاسمارانگ را با SHA-256 Hash_DRBG جایگزین کرده است که در NIST SP 800-90A مشخص شده و آن را در شروع با یک دیجست کامل ۲۵۶ بیتی از هر دو عنصر امنیتی seed میکند، در حالی که firmware قبلی آن را به ۳۲ بیت کاهش میداد.
فشردن کلیدها بر اساس طراحی RNG دکمهای پیتر تاد انجام میشود که زمانبندی فشردن کلیدها را در دقت سیکل CPU هش میکند. اولین فشار به عنوان مرجع تعیین میشود و هر یک از ۶۴ فاصله بعدی با دو بیت entropy اعتبار داده میشود.
seedهای قدیمی هنوز نیاز به مهاجرت دارند
“نصب این بهروزرسانی یک seed آسیبپذیر موجود را ایمن نمیکند،” Coinkite نوشت و به هر کسی که seed او ممکن است بین ۲۰۲۱ تا ژوئیه ۲۰۲۶ روی firmware آسیبدیده تولید شده باشد توصیه کرد یک seed جایگزین بسازد و بیتکوین (BTC) خود را منتقل کند. Mk2 و Mk3 شامل این انتشار نمیشوند و حداقل نسخه رفعشده آنها ۴.۲.۰ باقی میماند.
یک میزبان USB آلوده میتوانست یک تراکنش آمادهشده را پس از تأیید مالک بازنویسی کند، به طوری که امضا خروجیهای متفاوتی را پوشش دهد. اکنون دستگاه قبل از امضا دوباره آن بایتها را بررسی میکند و در صورت تغییر با هشدار “تراکنش تغییر یافته است” متوقف میشود.
صفحه وضعیت امنیتی جدید Coinkite چهار بررسی مستقل را فهرست میکند، از جمله یک تست واقعی دستگاه که هشت بار خواندن RNG سختافزاری را برای یک درخواست seed ۳۲ بایتی مشاهده کرد و بازسازی که هر بایت firmware امضاشده را مطابقت داد.
شرکت خاطرنشان کرد که این بررسیها “یک ممیزی کامل از هر فایل firmware نیست.” همانطور که CryptoPotato گزارش داد، زیانهای تأییدشده از ۱۰۰ میلیون دلار عبور کرده است، با شمارش ۱,۵۹۶ بیتکوین توسط Galaxy Research از حدود ۷,۳۰۰ آدرس، و یک موج چهارم مشکوک که تقریباً ۴۴۹ بیتکوین را در ۳ اوت جابجا کرده است.


