گث (Geth) معتبرترین نرمافزار برای اتصال به بلاکچین اتریوم است. هفته گذشته آسیبپذیری مهمی در کلاینت گث کشف شد و توسعهدهندگان اکیدا توصیه کردند که تمامی نودها، نرمافزار خود را به جدیدترین نسخه آن ارتقا دهند. با این حال از آنجا که برخی از نودها نرمافزار خود را ارتقا ندادهاند، شبکه اتریوم با خطر فورک شدن مواجه شده است.
به گزارش میهن بلاکچین و به نقل از کویندسک، تیم توسعه کلاینت گث در ۲۴ آگوست (۲ شهریور) نسخه فوری رفعشده این مشکل امنیتی را منتشر کرد. این مشکل امنیتی موجب میشد برخی از کاربران نتوانند بلاک جدیدی به شبکه اضافه نمایند. گث (Geth) معتبرترین نرمافزار به منظور اتصال به شبکه اتریوم است که تقریبا توسط ۷۵٪ از کاربران استفاده میشود.
تیم Go Ethereum در ۱۸ آگوست متوجه یک آسیب پذیری شدند و در توییتر اعلام کردند که تیم توسعهدهنده گث به زودی این مشکل را با انتشار نسخه جدید و فوری کلاینت Geth حل میکند. با این حال جزییات این مشکل امنیتی برای جلوگیری از حملات احتمالی فاش نشد.
پیتر سیلاگی (Peter Szilagyi) رهبر تیم توسعه اتریوم در ۲۴ آگوست در گیتهاب عنوان کرد جزییات این مشکل امنیتی بعدها اعلام خواهد شد تا قبل از آن نودها و پروژههای وابسته زمان کافی برای ارتقا نرمافزارهای خود در اختیار داشته باشند.
با این حال به نظر میرسد تعدادی از کاربران به این مشکل امنیتی پیبردهاند و در حال حاضر در حال بهرهبرداری (اکسپولیت) از نسخههای قدیمیتر نرمافزار گث هستند.
با اینکه تیم Geth تاکید کرده بودند که تمام کاربران نرمافزار خود را به آخرین نسخه گث ارتقا دهند اما با این حال تنها حدود ۳۶٪ از نودها با توجه به آمار ethernodes.org نرمافزار خود را به آخرین نسخه آپدیت کردهاند.
زمان تعیین کننده خواهد بود
ماریوس وندر ویجن (Marius Van Der Wijden) توسعهدهنده Go Ethereum در مصاحبه با کویندسک با اشاره به این موضوع که نظرات او شخصی است و به نمایندگی از بنیاد اتریوم یا تیم او نیست، اعلام کرد که بعد از فاش شدن این موضوع امنیتی، حملههای اکسپلویت اجتنابناپذیر بوده است. وی در این خصوص اذعان داشت:
میدانستم که بالاخره یک نفر به این مشکل پی خواهد برد. فقط امیدوار بودم که افراد بیشتری تا زمان در اختیار داشتند نرمافزارهایشان را آپدیت میکردند.
او به نودهای اتریوم پیشنهاد داده است افراد تیم توسعهدهنده این کلاینت را در شبکههای اجتماعی دنبال کنند و خود او نیز یک لیست عمومی ایمیل برای توزیع اطلاعات مهم تهیه خواهد کرد. او متذکر شد که تیم توسعه دهنده کلاینت گث به خوبی و در زمان مناسبی نسبت به این مشکل واکنش نشان دادهاند.
من نسبت به واکنشمان راضی هستم. زمانیکه متوجه احتمال فورک شدن شبکه شدیم، تنها در چند دقیقه تراکنش تهدیدآمیز را پیدا کردیم.
او در مصاحبه با کوین دسک اعلام کرد یک آدرس مشخص مسئول این حمله است اما از ارائه جزییات آن سر باز زد به این دلیل که این حمله در حال حاضر در شبکههای بایننس اسمارت چین (BSC) و پالیگان نیز تکرار شده است. شبکههای سازگار با ماشین مجازی اتریوم (EVM) نیز در معرض خطر قرار دارند. او متذکر شد که یک متخصص امنیت بلاکچین به نام گویدو ورانکن (Guido Vranken) اولین کسی است که متوجه این مشکل شده است. ورانکن در زمان بررسی امنیتی ماشین مجازی تلوس با استفاده از تکنیک fuzzing متوجه این مشکل شده است.
این اولین باری نیست که بلاکچین اتریوم به دلیل استفاده کاربران از نسخههای قدیمیتر کلاینت گث، با تهدید فورک شدن روبرو میشود. در نوامبر ۲۰۲۰ شبکه اتریوم با مشکل مواجهی روبرو شد و توسعهدهندگان اعلام کردند این مشکل به دلیل نبود ارتباطات کافی بین نودها است. به این دلیل که آنها از اهمیت بهروزرسانی مطلع نیستند. جزییات این اختلال در لینک زیر توضیح داده شده است.
با این حال این بار پیتر سیلاگی عنوان کرد که روش متفاوتی را برای اطلاعرسانی اتخاذ میکنند. وی در توییتی اعلام کرد:
بار قبلی که نسخه فوری رفع مشکل امنیتی را منتشر کرده بودیم، کاربران از عدم اطلاعرسانی ما شاکی بودند. این بار تصمیم گرفتیم این کار را به روشی دیگر انجام دهیم. ببینیم کدام یک از این دو روش بهتر خواهد بود.
به همین ترتیب تیم Go Ethereum در توییتر اعلام کردند که این آسیبپذیری رفع شده است و کاربران را به ارتقا نرمافزارهایشان تشویق کردند.
به نظر میرسد هیچ کدام از این دو روش برای جلوگیری از فورک شدن زنجیره موفق نبودهاند. اکثر توسعهدهندگان اتریوم مانند آندره کرونج (Andre Cronje) از کاربران خواستهاند که فعلا تراکنشی در شبکه اتریوم ثبت نکنند و برای مدتی از این شبکه استفاده نکنند. وی عنوان کرد همه ما به این فاصله احتیاج داریم.
توسعهدهدگان گث با نودها در ارتباط هستند و از آنها میخواهند نرمافزارهایشان را به آخرین نسخه ارتقا دهند. احتمال دارد فورک شدن شبکه با بهروزرسانی بیشتر نودها خود به خود مرتفع گردد.
طولانیترین زنجیره اتریوم کدام خواهد بود؟
بخشی از فورک شدن زنجیره را میتوان به ماینرهای قدرتمندی همچون Flexpool، BTC.com و Binance نسبت داد که از کلاینت معیوب Go استفاده میکردند. تیم بیکو (Tim Beiko) توسعهدهنده بنیاد اتریوم، توسعهدهندهها توانستهاند با بایننس و BTC.com ارتباط برقرار کنند.
البته دیگر توسعهدهنده گث در توییتر اشاره کرده است که در زمان حمله، اکثر ماینرها نسخه ارتقا یافته کلاینت گث را اجرا کردهاند و حجم بیشتر قدرت هش شبکه روی زنجیره اصلی فعال است. اتریوم در حال حاضر به صورت نرمال فعالیت میکند.
حمله به شبکه اتریوم چگونه اتفاق افتاده است؟
ایده اطلاعرسانی در خصوص مشکل امنیتی به کاربران خوب پیش نرفت. زیرا در این میان شخصی موفق شده است مشکل پیش آمده را شناسایی کند و از آن به سود خود استفاده کند. اما اگر ولیدیتورهای نودهای خود را به نسخه جدید ارتقا میدانند این مشکل به وجود نمیآمد.
در واقع حمله کننده موفق شده است یکی از کدهای پیشفرض قرارداد را تغییر دهد. یک کاربر توییتر با نام مستعار Good Guy Biker این حمله را به شرح زیر توضیح داده است. به واسطه این آسیب پذیری در حال حاضر شبکه اتریوم همزمان در دو زنجیره پیش میرود و اگر زنجیره اشتباهی به موقع حذف نشود ممکن است حمله ۵۱ درصدی و یا دوبار خرج کردن رخ دهد.
حمله کننده با استفاده از تابع STATICCALL تابع RunPrecompiledContract را اجرا کرده است. این قرارداد، اسمارت کانترکت (پری کامپایلد) 0x4 را فراخوانی کرده است. در خط ۷۵۱ از opcode STATICCALL عبارت args به ورودی چهارم تابع STATICCALL اشاره دارد که [inOffset ~ inOffset + inSize ] از حافظه ماشین مجازی اتریوم است.
حمله کننده در خط ۷۶۲ محتوای ret را درMem[retOffset : retOffset + retOffset] کپی میکند. این باعث میشود محتوای قرارداد (پری کامپایلد) 0x4 تغییر پیدا کند.