دو روز پیش در اثر یک هک سازماندهی شده نزدیک به ۷۰۰۰ بیت کوین به ارزش تقریبی ۴۲ میلیون دلار از داراییهای کاربران در صرافی بایننس به سرقت رفت. از آنجا که بایننس در حال حاضر بزرگترین صرافی کریپتوی جهان به لحاظ حجم مبادلات است، این خبر از اهمیت خاصی در این حوزه برخوردار است. به همین منظور در این زیر ذرهبین قصد داریم به بررسی دقیق جوانب مختلف هک بایننس ، شامل جنبه اقتصادی، روش احتمالی انجام هک و ایده برگرداندن بلاکچین بیت کوین به عقب برای بازیابی وجوه از دست رفته بپردازیم.
جنبه اقتصادی
این هک اولین تاثیر اقتصادی خود را بر روی قیمت توکن محلی صرافی بایننس یعنی BNB گذاشت، و باعث شد ارزش هر توکن Binance Coin با حدود ۱۰ درصد کاهش به سرعت از ۲۲.۳ دلار به ۱۹.۸ دلار برسد ولی توانست مجدد به بالای ۲۰ دلار بازگردد. ریزش قیمتی که با توجه به ابعاد خبر اصلا یک ریزش چشگیر به شمار نمیرود. از جمله دلایلی که قیمت BNB علی رغم به تعلیق درآمدن امکان واریز و برداشت تمام ارزهای دیجیتال بر روی این صرافی، روی ۲۰ دلار حمایت شد، میتوان به پاسخگویی سریع و مسئولانه CZ مدیر عامل بایننس و اعلام جبران خسارتها از محل ذخیره این صرافی (SAFU) اشاره کرد.
اما نباید از این واقعیت عبور کرد که در اثر این هک تا حدودی به اعتبار برند بزرگ بایننس لطمه وارد شد. هر چند ابعاد این موضوع کاملا به نحوه رفع این مشکل توسط بایننس در آینده نزدیک بستگی دارد.
بایننس اعلام کرد که این ۷۰۰۰ بیت کوین تنها ۲ درصد از کل بیت کوینهای نگهداری شده در این صرافی را تشکیل میدهد که بر روی کیف پولهای داغ (Hot Wallet) این شرکت نگهداری میشدهاند. و بایننس گفته که برای جبران این خسارت ۴۲ میلیون دلاری مشکلی ندارند. ولی باید گفت که این تعداد بیت کوین تنها ۲ درصد از بیت کوینهای کاربران این صرافی بوده است و قطعا درصد خیلی بیشتری از میزان سود این کمپانی را تشکیل میدهد و به طور تقریبی میتوان برآورد کرد که این ضرر چیزی در حدود سود ۳ ماهه این کمپانی را شامل میشود.
چگونگی انجام این هک
هر چند تا این لحظه جزئیات دقیق روش انجام این هک مشخص نشده است، اما با توجه به بیانات مسئولان این صرافی میتوان تا حدی چگونگی انجام این هک را حدس زد. CZ در ویدیوی از من بپرسی که منتشر کرد، گفت هک بایننس از طریق ترکیبی از روشهای داخلی و خارجی و با صبر و حوصله هکرها در بدست گرفتن تعداد زیادی از اکانتهای این صرافی و با استفاده از روشهایی مثل حملات فیشینگ صورت گرفته است و احتمالا یکی از پیچیدهترین حملات در نوع خود به شمار میرود. یک سناریویی که با توجه به اطلاعات موجود میتواند محتمل باشد به این ترتیب است که در ادامه میآید.
صرافی بایننس یک آدرس کیف پول آنلاین (1NDyJtNTjmwk5xPNhjgAMu4HDHigtobu1s) دارد که همیشه مقادیر زیادی بیت کوین بر روی این کیف پول داغ (Hot Wallet) به منظور انجام عملیاتهای برداشت (Withdraw) نگه داشته میشود. درون سرورهای صرافی متمرکز بایننس، یک رکورد از موجودی اکانتهای مختلف کاربران صرافی وجود دارد که تنها توسط بایننس قابل دسترسی و تغییر است. از یک سو هکرها از طریق حملات فیشینگ در طول مدت زمانی نسبتا طولانی توانستهاند،کنترل تعداد زیادی از اکانتهای کاربران را به دست بگیرند و از سوی دیگر آنها توانستهاند از طریقی به رکورد موجودی اکانتها دسترسی پیدا کنند و با اعمال تغییر در آن، موجودی اکانتهای تحت کنترل خود را افزایش داده و طی یک تراکنش این موجودیها را از آدرس کیف پول داغ این کمپانی خارج کنند.
بنابراین تا پیدا شدن تمام اکانتهای آلوده شده و راههای نفوذ و مسدود کردن آنها بایننس مجبور است امکان واریز و برداشت برای تمام توکنها را تعلیق کند و اعلام شده است که این کار احتمالا حدود یک هفته زمان ببرد.
بازگرداندن بلاکچین بیت کوین به عقب و حذف تراکنش هک
در ساعات ابتدایی پس از انجام هک بایننس ، چانپنگ ژائو (Changpeng Zhao) مدیر عامل بایننس، اعلام کرد که ما توانایی بازگرداندن بلاکچین بیت کوین به عقب (Rollback) به منظور حل این مشکل را داریم اما این کار میتواند به اعتبار شبکه بیت کوین لطمه وارد کند ولی کماکان به این گزینه هم فکر میکنیم. اما چند ساعت بعد CZ در توئیتر خود گفت طی مذاکراتی که با اشخاص مشهور این صنعت داشتیم از انجام این کار منصرف شدیم. او همچنین به مزایا و معایب این کار اشاره کرد و گفت این مشکلی است که برای بایننس پیش آمده و باید درسی برای ما باشد نه برای شبکه بیت کوین، بیت کوین غیر قابل تغییر ترین دفتر کل دنیاست و باید به همین صورت هم بماند. اما سئوال اینجاست که آيا اصلا بازگرداندن بلاکچین بیت کوین به عقب و حذف یک تراکنش از روی آن عملی است؟!
در جواب باید گفت که بله این کار عملیست اما تنها در صورتیکه یک ماینر بیش از ۵۱ درصد از کل توان پردازش شبکه (هش ریت) را در اختیار داشته باشد و یا ماینرهایی که در مجموع این حجم از هش ریت را در اختیار دارند، برای انجام این کار با هم متحد شوند. این اتفاق قبلا در جریان هک دائو (The DAO) در شبکه اتریوم رخ داد و اکثریت جامعه بر حذف تراکنش هک از بلاکچین اتریوم به اجماع رسیدند و این کار را با یک فورک سخت (Hard Fork) انجام دادند. زنجیره ای که تراکنش هک از روی آن حذف شده بود با نام اتریوم ادامه داد و کسانی که با انجام این کار مخالف بودند این کار را در تضاد با ذات غیرقابل تغییری بلاکچین میدانستند بر روی همان زنجیره قدیمی با نام اتریوم کلاسیک ادامه دادند.
CZ هم قصد داشت با روشی تقریبا مشابه تراکنشی که طی آن ۷۰۷۴ بیت کوین از کیف پول داغ بایننس به آدرسهای هکرها منتقل شده بود و بر روی بلاک شماره ۵۷۵۰۱۳ ثبت شده بود را از روی بلاکچین بیت کوین حذف کند. او برای انجام این کار میخواست این ۷۰۰۰ بیت کوین را به ماینرها بدهد تا آنها را متقاعد کند که برگردند از بلوک ۵۷۵۰۱۲ به بعد را با حذف تراکنش هک، دوباره ماین کنند. این طوری ۷۰۰۰ بیت کوین از هکرها گرفته میشد و به ماینرها میرسید. ماینرها به این ترتیب علاوه بر پاداش استخراج مجدد بلوکهای بعد از بلاک شماره ۵۷۵۰۱۳ (در زمان نگارش این تحلیل ۲۴۲ بلاک)، ۷۰۰۰ بیت کوین هم اضافه دریافت میکردند و این انگیزه لازم برای ایجاد اتحاد بین ماینرها برای انجام فورک و حذف تراکنش هک از بلاکچین را فراهم میکرد.
فرض کنید زمانی که تنها ۱۰۰ بلاک بعد از بلاک شماره ۵۷۵۰۱۳ (بلاکی که تراکنش هک بر روی آن ثبت شده است) به بلاکچین اضافه شده است، این فورک قرار باشد اتفاق بیفتد، برای انجام این کار چند استخر استخراج که در مجموع بیش از ۵۱ درصد هش ریت شبکه را در اختیار دارند باید بر سر ایجاد فورک توافق کنند و یک بلاک جدید با شماره ۵۷۵۰۱۳ بوجود آورند که تمام تراکنشهای آن مشابه بلاک ۵۷۵۰۱۳ قدیمی است به جز تراکنش هک که فاقد آن است.
از آنجاکه تراکنشهای موجود در این بلاک تغییر کردهاند، هش آن نیز تغییر میکند بنابراین باید مجدد POW (اجماع) برای آن صورت گیرد و دوباره استخراج شود و چون زنجیرههای بلاک به هم پیوسته هستند و تغییر هش یک بلاک بر روی هش بلاکهای بعدی هم تاثیر میگذارد بلاک های بعد از آن هم (علی رغم اینکه تراکنش های موجود در آن ها نباید تغییر کنند) هشی متفاوت از قبل خواهند داشت و آنها هم باید مجدد استخراج شوند، تمام این پروسه باید با سرعتی بیشتر از پیشرفت زنجیره قدیمی صورت گیرد تا زنجیره جدید طولانی تر از زنجیره قدیمی شود چون تنها در این صورت است که زنجیره جدید به عنوان زنجیره صحیح معیار کل شبکه بیت کوین قرار میگیرد و زنجیره قدیمی اعتبارش را از دست میدهد. به همین دلیل است که می گویند ماینرهایی که قصد انجام این کار را دارند باید حداقل ۵۱ درصد توان پردازش شبکه را در اختیار داشته باشند تا سرعت استخراج بلاکشان از بقیه شبکه بیشتر باشد.
هر چند که انجام این کار به لحاظ تئوری عملی است ولی عملیاتی کردن آن بسیار سخت و پیچیده است و هرچه هم که تعداد بلوک بیشتری بعد از بلاک ۵۷۵۰۱۳ ماین شود و به بلاکچین اضافه شود، انجام آن دشوارتر و هم میشود. پس بسیار بعید به نظر میرسد که ۷۰۰۰ بیت کوین انگیزه کافی برای استخرهای استخراج و ماینرها باشد تا با ایجاد انشعاب در بلاکچین بیت کوین به اعتبار آن لطمه وارد کنند و کل بازار و صنعت خود را تحت الشعاع قرار دهند. همچنین ایجاد چنین فورکی در شبکه اصلی بیت کوین میتواند خطراتی همچون سرقت مقادیر بیشتری بیت کوین از طریق حمله دوبار خرج کردن (Double Spending) در حین استخراج مجدد بلاکها و یا ایجاد دو دستگی در شبکه (همانند اتفاقی که در اتریوم افتاد و مسیر اتریوم و اتریوم کلاسیک را از هم جدا کرد