
هک Rain یکی از پرسروصداترین رویدادهای امنیتی این هفته بود؛ مهاجم با سوءاستفاده از نسخهای قدیمی از قرارداد هوشمند کارت این شرکت روی شبکهٔ سولانا، حدود ۱.۱ میلیون دلار تتر و استیبل کوین دیگر را از حسابهای وثیقهٔ کاربران خارج کرد. Rain زیرساختی است که به شرکتهای کریپتویی امکان میدهد کارتهای پرداختی صادر کنند که با استیبل کوین شارژ میشوند، و همین یعنی یک نقص کوچک در کد، همزمان چند سرویس مختلف را در معرض خطر قرار میدهد.
هک Rain دقیقاً چطور انجام شد؟
قرارداد آسیبپذیر برای انجام برخی عملیات حساس، به دو امضای مستقل نیاز داشت و برای تأیید آنها از دستورهای راستیآزمایی امضای سولانا استفاده میکرد. مهاجم دستور راستیآزمایی دوم را دستکاری کرد؛ بهگونهای که امضا، کلید عمومی و آفست پیام آن، همگی به همان اطلاعات دستور اول اشاره میکردند. نتیجه این شد که قرارداد یک امضای تحت کنترل مهاجم را بهجای دو تأیید مستقل پذیرفت. پس از عبور از این سد، مهاجم ابتدا برای خودش دسترسی مدیریتی روی حسابها ساخت و سپس موجودی استیبل کوین آنها را برداشت کرد. بخشی از دارایی سرقتشده بعداً به میکسرهای حریم خصوصی روی اتریوم منتقل شد.
چه کسانی آسیب دیدند و چه چیزی سالم ماند؟
دو نئوبانک کریپتویی Avici و Tria بیشترین آسیب را گزارش کردند؛ روی هم بیش از ۹۳۲ هزار دلار از دارایی حدود ۲۳۲۱ کاربر. سایر برنامههای متکی بر همان نسخهٔ قرارداد هم در معرض بودند و مجموع خسارت به حدود ۱.۱ میلیون دلار رسید. نکتهٔ مهم اینکه مهاجم به کلیدهای خصوصی یا کیف پولهای شخصی کاربران دسترسی پیدا نکرد؛ هدف حمله، قراردادهای وثیقهای جدایی بود که موجودی شارژشدهٔ کارتها را نگه میداشتند. خود شبکهٔ سولانا هم دچار مشکل نشد و تراکنشها بهطور عادی پردازش میشد؛ برخلاف هک تکتونیک که به توقف کامل شبکه انجامید.
- ریشهٔ حادثه: نسخهٔ قدیمی قرارداد کارت که هنوز در چند برنامه فعال بود.
- روش نفوذ: استفادهٔ دوباره از یک امضا بهجای دو تأیید مستقل.
- خسارت: حدود ۱.۱ میلیون دلار از حسابهای وثیقهٔ کارت.
- دستنخورده: کیف پولهای شخصی، کلیدهای خصوصی و خود شبکهٔ سولانا.
درس امنیتی برای کاربر ایرانی چیست؟
این حادثه یادآور یک واقعیت ساده است: وقتی دارایی از کیف پول شخصی خارج و وارد قرارداد یک سرویسدهنده میشود، امنیت آن دیگر به کد و کنترلهای دسترسی همان سرویس وابسته است، نه به شما. الگوی تکراری «نسخهٔ قدیمی که آپدیت نشده» را پیشتر در هک آل بریج هم دیدیم و دعواهای حقوقی بر سر مسئولیت این خطاها، مثل آنچه در پروندهٔ شکایت بایننس از ردوت پی رخ داد، نشان میدهد جبران خسارت همیشه ساده نیست. بهترین کار، نگهداشتن حداقل موجودی لازم روی کارت و انتقال بقیهٔ دارایی به کیف پول شخصی است؛ نکتهای که در چکلیست امنیت کیف پول هم بر آن تأکید شده است.
جمعبندی اینکه هک Rain نه ضعف بلاکچین، بلکه ضعف کد یک لایهٔ میانی بود؛ اما پیامد آن مستقیماً به جیب کاربر نهایی رسید. تا وقتی زیرساختهای مشترک بدون گزارش فنی کامل و بدون بهروزرسانی همزمان همهٔ نسخهها کار میکنند، این جنس حوادث تکرار خواهد شد. اطلاعات فنی رسمی شبکه در وبسایت رسمی سولانا در دسترس است.
سوالات متداول
در هک Rain دقیقاً چه اتفاقی افتاد؟
مهاجم از نسخهای قدیمی از قرارداد کارت Rain روی سولانا سوءاستفاده کرد و با استفادهٔ دوباره از یک امضا بهجای دو تأیید مستقل، دسترسی مدیریتی گرفت و حدود ۱.۱ میلیون دلار استیبل کوین برداشت.
آیا کیف پول شخصی کاربران هم هک شد؟
خیر. مهاجم به کلیدهای خصوصی و کیف پولهای شخصی دسترسی پیدا نکرد؛ حمله فقط قراردادهای وثیقهای را هدف گرفت که موجودی شارژشدهٔ کارتها را نگه میداشتند.
آیا شبکهٔ سولانا در این حادثه مشکل داشت؟
خیر. شبکه بهطور عادی تراکنشها را پردازش میکرد و مشکل از کد یک برنامهٔ مستقر روی شبکه بود، نه از خود بلاکچین.