یک حملهکننده ناشناس موجب شد تا توسعهدهندگان اتریوم اقدام به اعمال یک “بهروزرسانی خصوصی” کنند، چرا که شبکه در زمان بهروزرسانی Pectra در تستنت Sepolia با مشکلات فنی روبرو بود.
در یک گزارش پس از حادثه، توسعهدهنده اتریوم، ماریوس ون در ویدن، فاش کرد که این حملهکننده از یک “حالت لبه” نادیده گرفتهشده بهرهبرداری کرده و با ارسال انتقالهای با توکن صفر به قرارداد واریز، خطاها را به طور مکرر ایجاد کرده و روند بهروزرسانی را پیچیدهتر کرده است.
چه اتفاقی افتاد؟
در تاریخ 5 مارس، بهروزرسانی Pectra در Sepolia فعال شد، اما به سرعت توسعهدهندگان مشاهده کردند که پیامهای خطا در نودهای geth آنها ظاهر میشود و به موازات آن، تعداد بلاکهای خالی تولید شده افزایش یافت.
بر اساس گفتههای ون در ویدن، مشکل از آنجا نشأت میگرفت که قرارداد واریز یک رویداد غیرمنتظره – یک رویداد انتقال به جای رویداد واریز مورد نیاز – منتشر کرد، که منجر به رد معاملات توسط نودها و تولید تنها بلاکهای خالی شد.
این باگ با EIP-6110 مرتبط بود که نیاز داشت تا تمام لاگهای قرارداد واریز به طور یکنواخت پردازش شوند.
تیم geth یک اصلاحیه را صادر کرد که “تمام لاگهای خطای ناشی از قرارداد واریز را نادیده میگرفت”، اما گفته میشود که توسعهدهندگان یک حالت خاص در استاندارد ERC-20 را نادیده گرفتند.
ون در ویدن توضیح داد: “استاندارد ERC20 انتقال توکن صفر را ممنوع نکرده است، این به هر کسی اجازه میدهد (حتی اگر هیچ توکنی نداشته باشد) توکن صفر را به آدرس دیگری انتقال دهد که یک رویداد را منتشر میکند.” وی افزود که “حملهکننده” از این فرصت استفاده کرده و بارها انتقالهای با توکن صفر به قرارداد واریز ارسال کرده است.
این عمل همان خطا را به وجود آورد و باعث شد که شبکه به تولید بلاکهای خالی ادامه دهد.
در ابتدا، توسعهدهندگان گمان میکردند که یک تأیید کننده مورد اعتماد اشتباهی مرتکب شده است، اما پس از تحقیق، آنها مسأله را به یک حساب جدید تأمینمالی شده از یک فوست عمومی نسبت دادند.
برای متوقف کردن حمله، توسعهدهندگان نیاز داشتند که معاملات درگیر با قرارداد واریز را فیلتر کنند. با این حال، آنها گمان میکردند که حملهکننده گفتوگوهای آنها را زیر نظر دارد، که این مسئله باعث شد تا یک “بهروزرسانی خصوصی” برای نودهای DevOps که کنترل حدود 10 درصد از شبکه را بر عهده داشتند، انجام دهند.
پس از استقرار اصلاحیه، نودها دوباره مشغول تولید بلاکهای کامل شدند و اجازه دادند که زنجیره به طور عادی تا ساعت 14:00 UTC عمل کند. چند بلاک بعد، تراکنش حملهکننده با موفقیت استخراج شد و تأیید کرد که تمام اپراتورهای نود بهروز شدهاند.
با وجود اختلالات، اتریوم “هرگز نهاییسازی را از دست نداد” و این مشکل محدود به Sepolia بود، زیرا قرارداد واریز با توکن گیتدار آن با قرارداد واریز شبکه اصلی اتریوم متفاوت بود، به گفته ون در ویدن.
با این حال، توسعهدهندگان تصمیم گرفتند به منظور آزمایش و رفع اشکالات، بهروزرسانی Pectra را به تعویق بیندازند.
بهروزرسانی Pectra اتریوم چیست؟
فورک Pectra به منظور بهبود استیکینگ ETH، افزایش مقیاسپذیری لایه 2 و گسترش ظرفیت شبکه طراحی شده است. این بهروزرسانی شامل 11 پیشنهاد بهبود اتریوم (EIP) است و اولین بهروزرسانی عمده از زمان Dencun است که در مارس 2024 فعال شد.
همانطور که پیشتر توسط آتو تی کریپتو گزارش شد، توسعهدهندگان برنامهریزی کرده بودند که Pectra را تا 8 آوریل در شبکه اصلی بهکار بگیرند، به شرطی که هر دو تستنت Holesky و Sepolia بهروزرسانیهای خود را با موفقیت انجام دهند.
این بهروزرسانی ابتدا در تاریخ 24 فوریه در تستنت Holesky پیادهسازی شد، جایی که همچنین با مشکلات فنی مواجه شد که از نهایی کردن آن جلوگیری کرد.