پل وانچین برای انتقال توکن NIGHT میان کاردانو و BNB Chain طراحی شده بود. در چنین ساختاری، توکن های کاربر در یک سمت پل قفل می شوند و نسخه معادل آن ها در شبکه مقصد در اختیار کاربر قرار می گیرد. امنیت این فرایند به قراردادهای هوشمند، اعتبارسنج ها و پیام های امضا شده وابسته است.

در حمله اخیر، مهاجم ظاهرا توانست از یک امضای معتبر استفاده کند و آن را برای تایید برداشتی بسیار بزرگ تر به کار بگیرد. طبق تحلیل اولیه BlockSec، مشکل در بخش اعتبارسنجی موسوم به TreasuryCheck قرار داشت؛ بخشی که داده های مربوط به درخواست برداشت را برای امضا آماده می کرد.

گزارش های زنجیره ای نشان می دهند حدود ۵۱۵ میلیون NIGHT از آدرس قفل دارایی در سمت کاردانو خارج شد. این مقدار تقریبا ۹۷ درصد از ذخایر NIGHT موجود در آن بخش از پل را تشکیل می داد و تنها حدود ۱۲ میلیون توکن در خزانه باقی گذاشت.

علت فنی هک پل وانچین چه بود؟

ریشه احتمالی حمله به شیوه کدگذاری داده ها پیش از امضا مربوط می شود. برای اینکه یک اعتبارسنج بتواند تراکنشی را تایید کند، اطلاعاتی مانند مقدار انتقال، آدرس فرستنده، آدرس گیرنده، شناسه شبکه و سایر مشخصات تراکنش در قالب یک پیام قرار می گیرند و سپس امضا می شوند.

بر اساس تحلیل BlockSec، اعتبارسنج TreasuryCheck چهارده فیلد با طول متغیر را بدون استفاده از جداکننده یا ثبت طول هر فیلد، پشت سر هم قرار می داد. به بیان ساده، سیستم مرز دقیق میان اطلاعات مختلف را مشخص نمی کرد. این طراحی می توانست باعث شود دو مجموعه متفاوت از داده ها پس از اتصال به یکدیگر، رشته بایتی یکسانی تولید کنند.

برای درک ساده تر مشکل می توان دو ترکیب فرضی زیر را در نظر گرفت:

  • اطلاعات اول شامل مقدارهای «۱۲» و «۳۴۵» است.
  • اطلاعات دوم شامل مقدارهای «۱۲۳» و «۴۵» است.
  • اگر این مقدارها بدون جداکننده به هم متصل شوند، خروجی هر دو «۱۲۳۴۵» خواهد بود.

در چنین شرایطی، امضایی که برای مجموعه اول ساخته شده است ممکن است برای مجموعه دوم نیز معتبر تشخیص داده شود. به این نوع مشکل، کدگذاری غیر تزریقی یا Non-injective Encoding گفته می شود؛ یعنی چند ورودی متفاوت قادر هستند خروجی یکسانی ایجاد کنند.

چگونه یک برداشت کوچک به برداشت ۲۰۳ میلیون توکنی تبدیل شد؟

خطر اصلی این ضعف زمانی آشکار شد که مهاجم توانست اطلاعات یک درخواست معتبر را به شکلی دوباره تنظیم کند که پیام نهایی تغییر نکند، اما مقدار برداشت در بخش های داخلی تراکنش متفاوت باشد. قرارداد امضا را معتبر می دید، زیرا رشته امضا شده ظاهرا همان رشته قبلی بود.

طبق گزارش های اولیه، یک امضای معتبر که برای انتقال حدود ۳۱۱۰ توکن NIGHT صادر شده بود، در تراکنشی دیگر برای برداشت بیش از ۲۰۳ میلیون NIGHT مورد استفاده قرار گرفت. مهاجم با تکرار این روش توانست در مجموع حدود ۵۱۵ میلیون توکن را از خزانه پل خارج کند.

این حمله به معنای جعل مستقیم امضای رمزنگاری شده نبود. الگوریتم امضا احتمالا همان طور که طراحی شده بود کار می کرد، اما پیامی که امضا می شد ساختار امن و بدون ابهامی نداشت. به همین دلیل، یک امضای صحیح توانست برای داده هایی استفاده شود که نباید تحت پوشش آن امضا قرار می گرفتند.

چرا آسیب پذیری ساختار امضا خطرناک است؟

امضاهای دیجیتال یکی از پایه های امنیت پل های میان شبکه ای هستند. این امضاها باید ثابت کنند که اطلاعاتی مشخص، با ترتیب و ساختاری کاملا مشخص، توسط اعتبارسنج های مجاز تایید شده اند. اگر مرز میان داده ها مبهم باشد، اعتبار امضا دیگر لزوما به معنای اعتبار تمام جزئیات تراکنش نیست.

این نوع آسیب پذیری خطرناک است، زیرا مهاجم نیازی ندارد کلید خصوصی اعتبارسنج را سرقت کند یا الگوریتم رمزنگاری را بشکند. کافی است راهی پیدا کند که یک پیام معتبر با معنایی جدید بازسازی شود.

عوامل زیر شدت این ضعف را افزایش می دهند:

  • امکان استفاده دوباره از امضاهای معتبر
  • نبود جداکننده میان فیلدهای مختلف
  • مشخص نبودن طول هر بخش از پیام
  • نبود شناسه اختصاصی برای هر درخواست برداشت
  • ضعف در جلوگیری از اجرای دوباره تراکنش
  • نگهداری حجم زیادی از دارایی در یک خزانه واحد

آیا شبکه کاردانو یا Midnight هک شدند؟

بنیاد Midnight اعلام کرد که این حادثه به زیرساخت شخص ثالث وانچین محدود بوده و شبکه اصلی Midnight، اعتبارسنج ها و سازوکار اجماع آن تحت تاثیر قرار نگرفته اند. شواهد منتشرشده نیز نشان می دهند حمله مستقیما زیرساخت پل میان کاردانو و BNB Chain را هدف قرار داده است.

بنابراین، استفاده از عبارت هایی مانند «هک شبکه کاردانو» یا «نفوذ به بلاکچین Midnight» برای توصیف این حادثه دقیق نیست. دارایی NIGHT متعلق به اکوسیستم Midnight بود، اما آسیب پذیری در پل وانچین و منطق انتقال میان شبکه ای قرار داشت.

این تفاوت اهمیت زیادی دارد، زیرا امنیت شبکه اصلی یک بلاکچین با امنیت برنامه ها، پل ها و قراردادهای شخص ثالثی که روی آن فعالیت می کنند یکسان نیست.

سرنوشت توکن های سرقت شده چه شد؟

پس از خروج دارایی ها از خزانه پل، بخشی از توکن ها میان آدرس های تازه توزیع و در صرافی های غیرمتمرکز فروخته شدند. افزایش ناگهانی عرضه باعث شد قیمت NIGHT بیش از ۳۰ درصد کاهش پیدا کند و برای مدتی به پایین ترین سطح تاریخی خود برسد. قیمت این توکن در ادامه بخشی از افت خود را جبران کرد.

وانچین پس از شناسایی حادثه، مسیر آسیب دیده پل را متوقف کرد. همچنین گزارش شد چند صرافی متمرکز از جمله Binance، OKX، Kraken، KuCoin، Bybit، Gate و MEXC اقداماتی برای مسدود کردن جابه جایی وجوه مرتبط انجام دادند.

با این حال، میزان دقیق توکن هایی که فروخته، مسدود یا همچنان در کیف پول های مهاجم نگهداری می شوند، ممکن است با ادامه بررسی های زنجیره ای تغییر کند.

اشتراک‌ها:
دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *