روابط عمومی شرکت ایدکو (توزیعکنندهی محصولات کسپرسکی در ایران)؛ محققین چندین آسیبپذیری در آرشیو BitcoinJS کشف کردند که میتوانست کیفپولهای بیتکوینیای را که یک دهه پیش به طور آنلاین ساخته شده بودند در معرض هک قرار دهد. مشکل اصلی این است که قابل حدس بودن کلیدهای خصوصی این کریپتووالتها از آنچه توسعهدهندگان آرشیو فکر میکردند به مراتب بیشتر بوده است. با ما همراه بمانید.
آسیبپذیریهای Randstorm و پیامدهایش
بیایید از ابتدا شروع کنیم. محققین Unciphered–شرکتی متخصص در ریکاوری دسترسی کریپتووالت- تعدادی آسیبپذیری را در آرشیو BitcoinJS JavaScript که توسط خیلی از پلتفرمهای ارز دیجیتال آنلاین استفاده میشد کشف کرده و شرحش دادند. از بین این سرویسها اسامی معروفی هم به چشم میخورد: خصوصاً Blockchain.info که اکنون به سایت Blockchain.com آن را میشناسیم. محققین نام این مجموعه آسیبپذیری را Randstorm گذاشتند. گرچه این آسیبپذیریها در خود آرشیو BitcoinJS سال 2014 فیکس شدند اما مشکل در نتیجه استفاده از این آرشیو همچنان ادامه پیدا کرده: کریپتو والتهایی که اوایل دهه 2010 با BitcoinJS ساخته شدند ممکن است ناامن باشند- بدینمعنا که خیلی راحتتر میشود کلیدهای خصوصی آنها را پیدا کرد (راحتتر از آنچه کریپتوگرافی بیتکوین تصور میکند). محققین اینطور برآورد کردهاند که چندین میلیون والت –کل آن حدود 1.4 میلیون بیتکوین- بالقوه به دلیل Randstorm در معرض خطر هستند.
از بین این والتهای بالقوه آسیبپذیر میشود –طبق گفته محققین- بین 3 تا 5 درصدشان به حملات واقعی آسیبپذیرند. بر اساس نرخ تقریبی مبادله بیتکوین –تا زمان نگارش این مقاله- حدود 36500 دلار است، این به معنای کل غارت 1.5 تا 2.5 میلیارد دلاری برای مهاجمینی است که میتوانند با موفقیت از Randstorm سوء استفاده کنند. محققین ادعا میکنند که آسیبپذیریهای Randstorm واقعاً میتوانند برای حملات دنیای واقعی به کیفپولهای کریپتو استفاده شوند. علاوه بر این، آنها با موفقیت از این آسیبپذیریها برای بازگرداندن دسترسی به چندین کیف پول رمزنگاری ایجاد شده در Blockchain.info قبل از مارس 2012 استفاده کردند. آنها به دلایل اخلاقی اثبات مفهوم حمله را منتشر نکردند زیرا این مستقیم دهها هزار کریپتووالت را تحت خطر سرقت قرار میداد. محققین از قبل با سرویسهای ارزهای دیجیتال آنلاین که از نسخههای آسیبپذیر آرشیو BitcoinJS استفاده میکنند، تماس گرفتهاند. به نوبه خود، این خدمات به مشتریانی که به طور بالقوه تحت تأثیر رندستورم قرار میگیرند، اطلاع دادند.
ماهیت آسیبپذیریهای Randstorm
بیایید با جزئیات بیشتری به نحوه عملکرد این آسیبپذیریها نگاه کنیم. در قلب امنیت کیف پول بیتکوین، کلید خصوصی نهفته است. مانند هر سیستم رمزنگاری مدرن، بیت کوین بر این تکیه دارد که این کلید مخفی و غیرقابل شکست است. باز هم، مانند هر سیستم رمزنگاری مدرن، این شامل استفاده از اعداد تصادفی بسیار طولانی است. و برای امنیت هر داده ای که توسط کلید خصوصی محافظت میشود، باید تا حد امکان تصادفی باشد. اگر عددی که بهعنوان کلید استفاده میشود بسیار قابل پیشبینی باشد، این کار را برای مهاجمی که اطلاعاتی در مورد روش تولید کلید دارد، آسانتر و سریعتر میکند.
به خاطر داشته باشید که تولید یک عدد واقعا تصادفی کار آسانی نیست و کامپیوترها به دلیل ماهیت خود برای این کار بسیار نامناسب هستند زیرا بسیار قابلپیش بینیاند. بنابراین، آنچه که ما معمولاً داریم اعداد شبه تصادفی هستند، و برای افزایش آنتروپی نسل (زبان رمزنگار برای اندازه گیری غیرقابل پیش بینی بودن) به توابع ویژه تکیه میکنیم. اکنون بیایید به آرشیو BitcoinJS برگردیم. برای به دست آوردن اعداد شبه تصادفی "با کیفیت بالا"، این آرشیو از کتابخانه جاوا اسکریپت دیگری به نام JSBN (شماره بزرگ جاوا اسکریپت) به ویژه تابع SecureRandom آن استفاده میکند.
همانطور که از نامش پیداست، این تابع برای تولید اعداد شبه تصادفی که واجد شرایط استفاده در رمزنگاری هستند، طراحی شده است. برای افزایش آنتروپی، SecureRandom به عملکرد مرورگر window.crypto.random متکی است. مشکل این است که گرچه تابع window.crypto.random در خانواده مرورگر Netscape Navigator 4.x وجود داشت، اما این مرورگرها تا زمانی که خدمات وب به طور فعال از آرشیو BitcoinJS استفاده میکردند منسوخ شده بودند. و در مرورگرهای محبوب آن روزها - اینترنت اکسپلورر، گوگل کروم، موزیلا فایرفاکس و اپل سافاری - تابع window.crypto.random به سادگی اجرا نمی شد. متأسفانه، توسعهدهندگان آرشیو JSBN نتوانستند هرگونه بررسی یا پیام خطای مربوطه را فراهم کنند. در نتیجه، تابع SecureRandom از مرحله افزایش آنتروپی در سکوت عبور و به طور موثر وظیفه ایجاد کلیدهای خصوصی را به تولیدکننده اعداد شبه تصادفی استاندارد، Math.random واگذار کرد.
این به خودی خود بد است زیرا Math.random برای مقاصد کریپتوگرافیک حذف نشده است اما وضعیت وقتی بدتر میشود که پیادهسازی Math.random در مرورگرهای محبوب بین سالهای 2011 تا 2015 خصوصاً در گوگل کروم دارای باگهایی میشود که در نتیجهی آن تعداد اعداد رندوم حتی کمتر هم شد. در عوض آرشیو BitcoinJS همه مشکلات فوقالذکر را از JSBN به ارث برد. در نتیجه، پلتفرمهایی که از آن برای تولید کلیدهای خصوصی برای کریپتووالتها استفاده کردند دارای اعداد کمتری شدند و این خارج از انتظار توسعهدهندگان آرشیو بود. و از آنجایی که این کلیدها با قابلیت پیشبینی بسیار بالا تولید میشوند، اعمال آنها بسیار سادهتر است – اجازه میدهند کیف پولهای رمزنگاری آسیبپذیر ربوده شوند. همانطور که در بالا ذکر شد، این یک خطر تئوری نیست، بلکه یک خطر عملی است – تیم Unciphered توانست از این آسیبپذیریها برای بازگرداندن دسترسی به چندین کیف پول رمزنگاری قدیمی ایجاد شده استفاده کند (در نظر داشته باشید این یک هک اخلاقی بود).
Randstorm: چه کسی در خطر است؟
BitcoinJS از آرشیو آسیبپذیر JSBN درست از زمان معرفیاش در سال 2011 تا 2014 استفاده کرد. اما در نظر داشته باشید که برخی پروژه های رمزارز شاید برای مدتی از نسخه قدیمیتر این آرشیو استفاده میکردند. در مورد باگهای Math.random در مرورگرهای محبوب هم تا پیش از 2016 با تغییر الگوریتمهای تولید اعداد شبه رندوم رفع شدند. همه اینها با هم نشان میدهد بین سالهای 2011 تا 2015 کریپتووالتهای بالقوه آسیبپذیر ساخته شدند. محققین تأکید دارند BitcoinJS در دهه 2010 بسیار طرفدار داشت پس سخت است لیست کاملی تهیه کرد از همه خدماتی که ممکن بوده از این نسخه آسیبپذیر استفاده کرده باشند. گزارشی که به دست آمده شامل موارد زیر میشود که البته جامع نیست:BitAddress - هنوز فعال است.
BitCore (BitPay) - هنوز عملیاتی است.
Bitgo - هنوز عملیاتی است.
info - هنوز به عنوان Blockchain.com فعال است.
Blocktrail - به https://btc.com یا https://blockchair.com هدایت میشود.
BrainWallet - از بین رفته.
CoinKite - اکنون کیفپول های سختافزاری میفروشد.
CoinPunk - از بین رفته.
Dark Wallet - به https://crypto-engine.org هدایت میشود.
DecentralBank - از بین رفته.
Info (Block.io) هنوز عملیاتی است.
EI8HT - از بین رفته.
GreenAddress - به https://blockstream.com/green/ هدایت میشود.
QuickCon - از بین رفته.
Robocoin - از بین رفته.
Skyhook ATM - به https://yuan-pay-group.net هدایت میشود.
علاوه بر کیف پول بیتکوین، کیفپول های لایتکوین، زی کَش و دوجکوین نیز ممکن است در معرض خطر باشند، زیرا آرشیوهای مبتنی بر بیتکوین جی اس برای این ارزهای دیجیتال نیز وجود دارد. طبیعی به نظر میرسد که فرض کنیم این آرشیوها میتوانند برای تولید کلیدهای خصوصی برای کیف پول های رمزنگاری مربوطه استفاده شوند. گزارش Unciphered مجموعه ای از پیچیدگیهای دیگر مرتبط با Randstorm را شرح میدهد. اما خلاصهاش این است که کیف پولهایی که بین سالهای 2011 و 2015 با استفاده از آرشیو آسیبپذیر ایجاد شدهاند ممکن است بسته به شرایط خاص در درجات مختلف آسیبپذیری را تجربه کنند.
چطور از خود در برابر Randstorm محافظت کنیم؟
طبق گفته خود محققین، این پرونده با رفع آسیبپذیری در بخش نرمافزاری حل و فصل نمیشود: پچ کردن کلیدهای خصوصی دارندگان والت و جایگزینیشان با کلیدهای امن هم امکانپذیر نیست. پس علیرغم این حقیقت که باگها مدتهاست فیکس شدند اما همچنان دارند روی کیفپولهای کریپتو از زمانی که خطاهای فوقالذکر گریبان آرشیو BitcoinJS را گرفت اثر میگذارند. این یعنی دارندگان کیفپولهای آسیبپذیر خود باید یک سری اقدامات امنیتی انجام دهند. به دلیل اینکه درآوردن فهرستی کامل از پلتفرمهای رمزارز که از این آرشیو آسیبپذیر استفاده کرده بودند سخت است بهتر است جانب امنیت را رعایت کرده و همه کریپتووالتهایی که بین سالهای 2011 تا 2015 ساخته شده بودند را بالقوه ناامن دانست (مگر آنکه دقیقاً مطمئن باشید آنها امن هستند) و طبیعتاً هرقدر کیفپولی اصطلاحاً چاقتر، مجرمان سایبری برای آن حریصتر!
راه حل واضح (و تنها) مشکل ایجاد کیف پولهای رمزنگاری جدید و انتقال تمام وجوه از کیف پول های بالقوه آسیبپذیر به آنها است. و از آنجایی که به هر حال باید این کار را انجام دهید، منطقی است که این بار با نهایت احتیاط پیش بروید. محافظت از رمزنگاری یک فرآیند چند مرحلهای است، به همین دلیل ما یک چک لیست جامع برای شما آماده کردهایم:
- تهدیدات اصلی رمزارزها و روشهای محافظتی را با جزئیات کاوش کنید.
- تفاوت بین کیفپول های رمزنگاری گرم و سرد و رایجترین روشهای حمله به آنها را درک کنید.
- از یک کیفپول سخت افزاری (سرد) برای ذخیره طولانی مدت داراییهای رمزنگاری اصلی و یک کیف پول داغ با حداقل سرمایه برای تراکنشهای روزانه استفاده کنید.
- قبل از انتقال تمام وجوه از کیف پول قدیمی به کیف جدید، تمام دستگاههای خود را به محافظت قابل اعتماد مجهز کنید. این گوشی هوشمند یا کامپیوتر شما را در برابر تروجانهایی که به دنبال سرقت گذرواژه ها و کلیدهای خصوصی هستند که آدرسهای کیف پول رمزنگاری شده را در کلیپ بورد جایگزین میکنند محافظت و همچنین از کامپیوتر شما در برابر استخراجکنندگان مخرب رمزنگاری و دسترسی از راه دور غیرمجاز محافظت میکند.
- هرگز عکس یا اسکرین شات عبارت اولیه خود را در گوشی هوشمند خود ذخیره نکنید، هرگز عبارت اولیه خود را در ابرهای عمومی پست نکرده، آن را از طریق پیام رسان یا ایمیل ارسال و آن را در جایی وارد نکنید، مگر در زمان بازیابی کلید خصوصی گم شده.
- کلید خصوصی خود و عبارت seed را برای بازیابی ایمن ذخیره کنید. این کار را می توان با استفاده از کیف پول محافظت از هویت در Kaspersky Premium انجام داد که تمام داده های ذخیرهشده را با استفاده از AES-256 رمزگذاری میکند. رمز عبور آن در هیچ کجا به جز در سر شما ذخیره نمیشود (مگر اینکه، البته، روی یک استیکی نوت چسبیده به مانیتور شما باشد) و غیرقابل بازیابی است – بنابراین تنها کسی که به اسناد شخصی شما دسترسی دارد شما هستید.
- گزینه دیگر استفاده از کیف پول رمزنگاری سرد است که برای گرفتن بکآپ از کلید خصوصی به عبارت اولیه نیاز ندارد. به عنوان مثال، کیف پول سخت افزاری Tangem اینگونه کار میکند.
منبع: کسپرسکی آنلاین (ایدکو)
کسپرسکی اسم یکی از بزرگترین شرکتهای امنیتی و سازنده آنتی ویروس است که برخی از کاربران اشتباهاً این شرکت و محصولات آنتی ویروس آن را با عناوینی نظیر کسپرسکای،کاسپرسکی، کسپراسکای، کسپراسکای، و یا کاسپراسکای نیز میشناسد. همچنین لازم به ذکر است مدیرعامل این شرکت نیز یوجین کسپرسکی نام دارد.