توسعهدهندهای از اتریوم اعلام کرد بهروزرسانی اخیر پکترا در شبکه آزمایشی سپولیا (Sepolia) با خطاهایی مواجه شد که پس از استفاده یک مهاجم از «مورد لبه» (Edge case) برای استخراج بلاکهای خالی، وضعیت بدتری پیدا کرد.
به گزارش میهن بلاکچین، توسعهدهندگان پس از شناسایی خطا، اصلاحیهای برای رفع مشکل منتشر کردند، اما مهاجم همچنان از آسیبپذیری استفاده کرد.
ایجاد بلاکهای خالی
پکترا در تاریخ ۵ مارس ۲۰۲۴ (۱۵ اسفند ۱۴۰۲) ساعت ۱۰:۵۹ به وقت تهران در آخرین شبکه آزمایشی خود، سپولیا، راهاندازی شد، اما ماریوس فان در ویدن (Marius van der Wijden)، توسعهدهنده اتریوم، در پستی که در ۸ مارس (۱۸ اسفند) منتشر کرد، گفت که تیم بلافاصله خطاهایی در نود گِت (geth) خود مشاهده کردند و بلاکهای خالی استخراج میشدند.
مورد لبه به سناریویی اشاره دارد که در محدودیتهای شدید در یک سیستم رخ میدهد و اغلب اشکالات یا آسیبپذیریهای پیشبینینشده را آشکار میکند. در توسعه نرمافزار، این مورد به وضعیتی گفته میشود که ورودی، محیط یا اجرا به شرایط غیرعادی یا نادری میرسد که سیستم به طور کامل برای رسیدگی به آن آماده نبوده است.
در زمینه ارتقای پکترا، مورد لبه نوع خاصی از تراکنش بود؛ شامل ارسال یک 0 توکن به آدرس واریز که توسط توسعهدهندگان پیشبینی نشده بود. این حالت، خطایی را ایجاد کرد که منجر به استخراج بلاکهای خالی و اختلال در شبکه شد. موردهای لبه به ویژه در توسعه بلاکچین اهمیت دارند، زیرا مهاجمان یا شرایط غیرمنتظره میتوانند از آنها برای ایجاد اختلال سوءاستفاده کنند.
توسعهدهنده اتریوم نیز توضیح داد خطا به این دلیل بود که قرارداد واریز (Deposit Contract) نوع اشتباهی از رویداد (یک رویداد انتقال به جای واریز) را فراخوانی کرده بود.
اصلاحیهای منتشر شد، اما فان در ویدن میگوید که آنها یک حالت مرزی را جا گذاشته بودند و یک کاربر ناشناس از آن استفاده کرد و یک انتقال زیرو توکن (0Token) به آدرس واریزی ارسال کرد که باعث شد دوباره خطا فعال شود.
وی توضیح داد:
پس از چند دقیقه دوباره بلاکهای خالی زیادی مشاهده کردیم، به همین جهت به بررسی استخرهای تراکنشها پرداختیم و یک تراکنش مشکلساز دیگر پیدا کردیم که همان حالتهای مرزی را فعال کرده بود.
ابتدا گمان میکردیم که یکی از نودهای معتبر اشتباهی مرتکب شده است، اما سریعاً متوجه شدیم که این تراکنش از یک حساب جدید بوده که به تازگی از طریق فاسِت (Faucet) تأمین شده است.
استاندارد ERC-20 هیچ محدودیتی برای انتقال زیرو توکن ندارد؛ این امکان را به هر کسی میدهد که حتی اگر هیچ توکنی نداشته باشد، به آدرسی دیگر توکن ارسال کند که این مورد توسط کاربر ناشناس شناسایی شد.
وی افزود:
تنها راه متوقف کردن این حمله، فیلتر کردن تمامی تراکنشهایی بود که با قرارداد واریزی تعامل داشتند. بنابراین ما اصلاحیه خصوصی دادیم و آن را برای چند نود دوآپس (DevOps) خود دیپلوی کردیم.
ماریوس در ادامه گفت:
ما گمان میکردیم که مهاجم ممکن است برخی از چتهای ما را بخواند، بنابراین تصمیم گرفتیم که اصلاحیه را منتشر نکنیم و تنها نودهایی که کنترل میکردیم را بهروزرسانی کنیم تا بلاکهای بیشتری در شبکه کامل شوند.
تا ساعت ۱۷:۳۰ به وقت تهران، تمامی نودها بهروزرسانی شده بودند و تراکنش کاربر ناشناس بهدرستی استخراج شد.
فان در ویدن گفت که آنها در طول این حادثه هیچگاه نهاییسازی (Finalization) را از دست ندادند و مشکل محدود به سپولیا بود& زیرا آنها از قرارداد واریزی مبتنی بر توکن به جای قرارداد واریزی معمولی شبکه اصلی استفاده میکردند.
قبلا توسعهدهندگان بهروزرسانی پکترا را در شبکه آزمایشی هولسکی (Holesky) در تاریخ ۲۶ فوریه ۲۰۲۴ (۸ اسفند ۱۴۰۲) آزمایش کرده بودند که با مشکلات مشابهی مواجه شد. نتیجه این بود که توسعهدهندگان تصمیم گرفتند تا بهروزرسانی پکترا را تا انجام آزمایشات بیشتر به تعویق بیاندازند.
پکترا یک فورک پس از بهروزرسانی دنکن (Dencun) است که کارمزدهای تراکنش برای شبکههای لایه ۲ را کاهش داده و اقتصاد رولآپهای اتریوم را بهبود بخشیده است. فورک دنکن در تاریخ ۱۳ مارس ۲۰۲۴ (۲۳ اسفند ۱۴۰۲) منتشر شد.
بنیاد اتریوم اخیراً یک ساختار رهبری جدید معرفی کرده است که در آن هشیا-وی وانگ (Hsiao-Wei Wang) و توماش استاچاک (Tomasz Stańczak)، به عنوان دو مدیر مشترک بنیاد، رهبری آن را به عهده گرفتهاند.