رمزارز دیگر ده سالی میشود که روی کار آمده است. در طول این بازهی زمانی شاهد صدها هک بزرگ روی صرافیهای آنلاین و سایر سرویسهای مرتبط با رمزارزها بودهایم. اغلب جزئیات این هکها مبهم باقی میماند. خیلی راحت میشود فهمید چه کسی یا سازمانی هک شده، چه زمان این اتفاق افتاده و چقدر پول به سرقت رفته اما اینکه «چطور» هنوز هم در هالهای از ابهام است.
خبرنگاران و روزنامهنویسان بیشتر علاقه دارند بدانند مبلغ سرقتشده چقدر بوده و سازمانهای قربانی هم از خجالت و شرم به این زودیها حاضر به دادن جزئیات نیستند. در این خبر قصد داریم جاهای خالی را پر کنیم و کمی به نحوهی عملکرد کریپتوهکها بپردازیم؛ قرار نیست راهکارهایی که میدهیم معجزه کند و دیگر شاهد این رخدادها نباشیم اما به هر حال بررسی آنها خالی از لطف نخواهد بود. پس با ما همراه شوید.
فیشینگ و بدافزار: هک استاندارد تبادلات رمزارز
صرافیهای رمزی، رمزارزهای کاربران و پول معمولی را در حساب بانکیهای همیشگیشان ذخیره میکنند. برای مجرمان سایبری، دست و پنجه نرم کردن با پول معمولی کمی خطرناک است؛ آنها برای قسر در رفتن از ماجراهای بعد از غارت پول باید خیلی سریع قبل از اینکه بانک فرصت کند حساب را ببندد آن مبلغ را نقد کنند. برای همین است که هکرها معمولاً سراغ رمزارزها میروند.
دروغ نگوییم، اولین و شاید تنها حقایق در مورد یک هک معمولِ صرافی رمزی اصولاً این است: 1) اتفاقیست که افتاده و 2) پول مشتری بر باد رفته.
اما واقعاً چه اتفاقی میافتد؟ راستش بیشتر اوقات چنین است: نخست مهاجمین فهرستی از کارمندان را که بنا بر نیازهایشان به دردشان میخورد تهیه کرده (از جمله شبکههای اجتماعیشان را) و ایمیلهای فیشینگی و هدفدار را به همراه پیلودهای مخرب به کسانی که به نظرشان میتوانند بالقوه قربانیهای خوبی باشند ارسال میکنند. بدینترتیب، مجرمان سایبری اینچنین به شبکهی تبادل رمزارز نفوذ میکنند.
سپس، چم و خم شرکت مورد نظر را یاد میگیرند: حسابدار هر چند وقت یکبار با مدیر ارتباط دارد، به همدیگر چه چیزهای رد و بدل میکنند، ساختار شبکهی داخلی را زیر نظر میگیرند، پیگیر میشوند که کیفپولهای رمزی کجا ذخیره میشوند و چطور از آنها مراقبت میشود. این مرحله زمان زیادی را میگیرد اما در نهایت باعث میشود مجرمان سایبری به دستگاه کارمندی که به سیستمهای حیاتی دسترسی دارد نفوذ کنند.
اگر سیستمهای خودکار صرافی آنلاین روی ارسال رمزارز تنظیم شود، پس در اختیار داشتن حقوق اپراتور یعنی مهاجمین میتواند رمزارز را برای خودشان ارسال کنند. گفته میشود حملهی اخیر روی صرافی آنلاین بایننس[1] درست بر اساس همین سناریو رقم خورد.
رخداد: هک صرافی بایننس
تاریخ: می 7، 2019
مقدار سرقتشده: 40,000,000 دلار (7 هزار بیتکوین)
حملات هدفدار: چطور ایمن بمانیم
اگر کسب و کار شما صرافی آنلاین است پس باید مطمئن شوید که هزینهی حمله از هزینهی سود احتمالی ضربدر احتمال موفقیت بیشتر نباشد. بنابراین توصیهی ما به شما این است:
به کارمندان خود سواد سایبری را بیاموزید (برای مثال، رزومهای که در قالب DOC است اصلاً حتی باز هم نکنید).
از راهکار امنیتی برای محافظت در برابر حملات هدفدار استفاده کنید- ترجیحاً راهکاری که نه تنها شما را در برابر تهدیدها روی هر نودِ بخصوص محافظت میکند که همچنین در کل سازمان ناهنجاریها را مورد بررسی قرار میدهد.
تست نفوذی سفارش دهید (که در طول آن، متخصصین امنیتی سعی میکنند به سیستم نفوذ کرده و اطراف آن را جستوجو میکنند. سپس به شما خواهند گفت کدام نقاط ضعیفتر عمل میکنند).
هزینههای دوگانه: سرقت دستگاه خودپرداز بیتکوین با گوشی
روش دیگرِ سرقت بیتکوینها در قالب دستگاههای خودپرداز صورت میگیرد. مردم معمولاً از دستگاههای خودپرداز برای برداشت وجه یا گرفتن ماندهحساب استفاده میکنند اما دستگاه خودپرداز بیتکوینی ویژگی دیگری نیز دارد: توانایی در خرید و فروش رمزارز.
افراد به منظور اجرای اسکمی بیتکوینی از طریق دستگاه خودپرداز، میتوانند از این دستگاهها برای فروش بیتکوینها، دریافت پرداخت نقدی و بعد لغو تراکنش استفاده کنند. شاید فکر کنید این نقشه براحتی لو میرود اما محض اطلاع خدمتتان عرض کنیم که برای مثال در بازهی زمانی کوتاهی، 45 مورد سرقت از دستگاههای خودپرداز بیتکوینی در کانادا اتفاق افتاد. از این دستگاه جمعاً مبلغ 200 هزار دلار دزدیده شد.
چطور چنین چیزی ممکن است؟ همانطور که میدانید، اطلاعات داخل بلاکچین در بلاکهایی ذخیره میشود. تراکنشی مانند «ارسال 1 بیتکوین به جان» فوراً در بلاک نوشته نمیشود؛ اول در صف قرار میگیرد و هر بلاک جدید هر دقیقه یکبار ساخته میشود. هر تراکنش تأییدنشده توسط سازندهی بلاک از صف برداشته میشود. در نظر داشته باشید که فضای کافی برای همهی تراکنشها وجود ندارد، بنابراین اولویت با مقادیر بالاست (همان مقادیری که سازندهی بلاک آن را نگه میدارد).
شاید باورش سخت باشد اما توسعهدهندگان این دستگاههای خودپرداز به آنها دستور ندادند صبر کنند تا تراکنشها در بلاکچین (پیش از توزیع پول) نوشته شوند. اینجاست که راحتی کاربر به قیمت امنیتش تمام میشود.
جزئیات بیشتر: اوایل، بیتکوین اجازهی لغو تراکنشهای در صف را نمیداد؛ چیزی که اغلب به تراکنشهایی با مبالغ پایین میانجامید. برای حل این مشکل، بیتکوین مکانیزم RBF[2] را اضافه کرد که اجازه میداد تراکنش در صف بماند تا با تراکنش دیگری جایگزین شود. اما این مکانیزم همچنین تغییر گیرنده را ممکن ساخت: ارسال بیتکوینها به فرستنده. اینکه بگوییم این کار یک نوع آسیبپذیری تلقی میشود کم گفتیم. در حقیقت این متود کاملاً با بیدقتی و ناشیگیری اتخاذ شده. درست همین ساز و کار بود که هک زیر را موجب شد:
رخداد: هک دستگاه خودپرداز بیتکوینی
تاریخ: سپتامبر 2018
مبلغ سرقتشده: 200000 دلار
هک هزینههای دوگانه: چطور ایمن بمانیم
بعد از اینکه پول سرقت شد، شرکت حامی این دستگاههای خودپرداز، ماشینهای خود را مدتی در حالت تعلیق قرار داد. اکنون کاربران میبایست بعد از اینکه بیتکوینها تحویل داده شدند برای دریافت وجه نقد به دستگاه خودپرداز معمولی مراجعه کنند. شاید خیلی کاربرپسند نباشد اما در عوض مکانیک بلاکچین بدرستی در آن صورت میگیرد.
با این تفاسیر، پر واضح است که برای جلوگیری از چنین پول هدر رفتنهایی، توسعهدهندگان میبایست تحلیل امنیت کاربردی سفارش میدادند. این تحلیل نیازمند متخصصینی از بیرون است که ساختار سرویس را بررسی کنند، کد را مشاهده کرده و به دنبال آسیبپذیریها بگردند.
حملهی 51 درصدی: چیرگی بر بلاکچین
شاید تا به حال در مورد اصل تغییرناپذیری[3] چیزی شنیده باشید: «دادههای بلاکچین تغییرپذیر نیستند». اما در برخی موارد این همهی واقعیت نیست. دو اصل که تضمین میکنند بلاکچین برای همهی کاربران یکسان است: اولی اینکه تمام شرکتکنندگان باید توافق کنند چه کسی سازندهی بلاک بعدی خواهد بود. احتمالِ موفق بودن فرد به منابع سرمایهگذاریشده بستگی دارد- هر قدر قدرت ماینینگ بیشتر، شانس هم بیشتر.
دومی، «قانون بلندترین زنجیره» است که میگوید در صورت بروز اختلاف، نسخهی معتبر بلاکچین بلندترین زنجیره است.
اگر فردی نسخهی بلاکچین خود را جعل کند و سعی در پخش آن نماید افراد دیگر آن را در خواهند کرد چون منابع کمتری رویش گسترده شده است و بنابراین، زنجیره کوتاهتر است.
اما اگر فردِ جاعل از بیش از 50 درصد قدرت ماینینگ استفاده کند شرایط تغییر میکند. درست همان زمان که تمام ماینرهای دیگر باید برای مثال نُه بلاک بسازند، یک کاربر مخرب شاید 10 تا بلاک بسازد. در حال حاضر، نسخهی جعلی این بلاکچین، بلندترین است؛ بنابراین هر کسی آن را میپذیرد و بدینترتیب، تاریخچهی مالی نیز به طور مؤثری تغییر مییابد.
کاربری که بیتکوینها را در نسخهی قدیمی بلاکچین عمومی صرف میکنند، این بیتکوینها را خواهند دید که در بلاکچین جعلی به حسابشان بازگشته. این دقیقاً همان بلایی است که بر سر صرافی آنلاین Gate.io اوایل سال 2019 آمد. یک مهاجم رمزارزش را به این صرافی فرستاد (و این واقعیت را در بلاکچین عمومی نوشت) و در عین حال سعی کرد بلاکچین اختصاصی خودش را نیز بسازد. وقتی صرافی مبلغ انتقالدادهشده را دریافت کرد و اعتبار را به ماندهی مهاجم افزود، مهاجم بلاکچین شخصیاش را (که حاوی تراکنش فوق نبود و اجازه میداد رمزارز بازپرداخت شود) توزیع نموده درخواست برداشت ماندهحساب از این صرافی را کرد. در نتیجه، صرافی پول را از دست داد. حال بیایید ببینیم چرا چنین اتفاقی را هر روز شاهد نیستیم و اینکه در این مورد خاص، مهاجم چه میزان قدرت رایانشی داشته که دست به چنین کاری زده است.
ما بیتکوین را به عنوان مثال استفاده خواهیم کرد. ماینرها هر یک ساعت شش بلاک درست میکنند. به ازای هر بلاک جایزهای 12.5 بیتکوینی صادر میشود (در تاریخ 6 اکتبر 2019، 75 بیتکوین معادل 600 هزار دلار بود). این تقریباً همان هزینهی اجازهی کل قدرت استخراج بیتکوین برای یک ساعت بود. سایت Crypto51 چنین محاسباتی را نشان داده است:
ستون آخر روشن میکند در حال حاضر چه میزان گنجایش اجاره موجود است. همانطور که مشاهده میکنید، در اختیار داشتن بلاکچین Ethereum Classic (مثل کاری که مهاجم بالا انجام داد) هر ساعت 10 هزار دلار هزینه خواهد برداشت. توجه داشته باشید که این اولین مورد این نوع حمله به حساب نمیآید. خیلی از رمزارزهای دیگر هم 51 درصد حملهی موفق بهشان تحمیل شده است.
رخداد: حملهی ETC 51% Gate.io
تاریخ: 7 ژانویه 2019
مبلغ سرقتشده: 200000 دلار (40,000 ETC)
حملهی 51 درصدی: چطور ایمن بمانیم
به طور کلی، توانایی در بازنویسیِ یک بلاکچین و استفاده از حملهای 51 درصدی، ویژگی ذاتی این فناوری است. برای اینکه حمله تا جای امکان گران تمام شود، صرافان ارزی سعی میکنند حتیالمقدور پیش از آپدیت کردن ماندهی کاربر بعد از تراکنش صبر کنند. چون هر قدر کرد بلاکهای بیشتری (از زمانی که تراکنش وارد بلاکچین شد) ساخته شود، کمتر این احتمال وجود دارد که بلاکچین شناسایی شده و به عقب برگردد. اما این تأخیر باعث میشود پروسهی نقل و انتقالات ساعتها به طول بیانجامد. در هر صورت، مطمئناً دوباره شاهد چنین حملهای خواهیم بود.
سرقت کلید مخفی: تصحیحکنندهی املای عبارت عبور
برای صرف کردن رمزارزها باید کلید مخفی داشته باشید. این کلید همانیست که در کیفپولهای رمزی خود ذخیره میکنید؛ ماندهی کاربر در همین بلاکچین ذخیره میشود. اگر کیفپولهای رمزی خود را عوض کنید، باید کلید کیف پول قدیمی خود را روی کیف پول جدید خود کپی کنید. برای سهولت امر، این کلید شامل یک عبارت متشکل از 12 کلمهی ساده میشود.
یکبار، توسعهدهندگان کیف پول رمزی تصادفاً این عبارت را به صورت آنلاین دادند برای تصحیح املا. سرمایهگذار ارزی بعد از سرقت 70 هزار دلاری به این اشتباه پی برد. شک داریم این اشتباه دلیل سرقت بوده باشد اما به هر روی، میتوان از این اتفاق درس عبرت گرفت.
این اتفاق از آن جهت افتاد که این روزها، اپلیکیشنها معمولاً از همان ابتدا ساخته نمیشوند؛ در عوض از اجزای به هم سوار شده تشکیل میشوند؛ شامل اجزایی ساخت دست توسعهدهندگان طرفسوم. توسعهدهندگان کیف پول رمزی Coinomi هم چنین راهی را پیش گرفتند. آنها برای نمایش فرم ورود عبارت عبور از اجزای jxBrowser استفاده کردند. این اجزا بدون اینکه توسعهدهندگان حتی روحشان هم باخبر باشد به طور پیشفرض همهی متن وارد شده در فرم را شروع میکنند به تصحیح. و بعد با استفاده از سایت googleapis.com از چک مبتنی بر کلود استفاده میکند. این برای فرمهای ورودی معمولی شاید به کار آید اما برای فیلدهای ورودی که رمزعبور و عبارتهای فوق محرمانه میپذیرند این به شدت خطرآفرین است. توسعهدهندگان برای دفاع از خود، گفتند عبارت اصلی که شامل 12 حرف ساده میشد فقط به گوگل رفته و در قالب رمزنگاریشده ارسال شده است. آنها گوگل را خطاکار دانستند. با این حال، قربانی مطمئن است این آسیبپذیری دلیل این سرقت هنگفت بوده است.
رخداد: آسیبپذیری احراز هویت شرکت توسعهدهندهی کیف پول ارزی Coinomi
تاریخ: 22 فوریه، 2019
مبلغ سرقتشده: 70 هزار دلار
سرقت کلید مخفی: چطور ایمن بمانیم
از طرفی، دلیل این مشکل، بیدقتی است. ویژگی تصحیح املای این اجزا ثبت شد و دستورالعملهایی برای غیرفعال کردن آن شرح داده شد. شاید در یک بررسی معمولی چنین مشکلی محرز نشود اما در تحلیلهای امنیتی اپلیکیشن حتماً ایرادات برملا خواهد شد. از طرفی دیگر، مشکل عمیقتر از این حرفهاست. استفاده از آرشیوهای طرفسوم پای مشکلات احتمالی را به ماجرا باز میکند (حالا چه الان و چه در آینده). همچنین ریسک حمله به زنجیره تأمین نیز افزایش مییابد. مجرم سایبری در یک حملهی زنجیرهی تأمین نیازی به هک کردن توسعهدهندهی اصلی ابزار ندارد؛ او تنها نیاز دارد یکی از کنتراکتورهای توسعهدهنده را نقض کند. کنتراکتورها هم اغلب بخوبی محافظت نمیشوند و شاید حتی ندانند که کد آنها در کدام پروژههای مهم قرار است استفاده شود.
[1] Binance
[2] روشی است که اجازه میدهد یک نسخه از تراکنش تأییدنشده را با نسخهی متفاوتی از تراکنشی که مبلغ بالاتری دارد جایگزین کنید.
[3] immutability axiom
منبع: کسپرسکی آنلاین
تنظیم: روابط عمومی شرکت ایدکو (توزیع کننده محصولات کسپرسکی در ایران)؛