یک باگ بحرانی در قرارداد استیکینگ پلتفرم سوپر رر (SuperRare) که به راحتی با تست‌ یونیت (Unit Tests) یا حتی چت جی پی تی قابل شناسایی بود، به یک هکر اجازه داد تا ۷۳۱,۰۰۰ دلار توکن RARE را به سرقت ببرد.

باگ ساده اما ضرر ۷۳۱ هزار دلاری برای سوپر رر

پلتفرم معامله NFT سوپر رر روز دوشنبه ۲۸ جولای ۲۰۲۵ (۶ مرداد ۱۴۰۴) به دلیل یک باگ ساده در قرارداد هوشمند خود، متحمل یک حمله شد که کارشناسان می‌گویند می‌توانست به راحتی با روش‌های استاندارد تست جلوگیری شود.

بر اساس گزارش شرکت امنیت سایبری کریپتو سایورس (Cyvers)، قرارداد استیکینگ پلتفرم SuperRare روز دوشنبه مورد سوءاستفاده قرار گرفت و حدود ۷۳۱,۰۰۰ دلار توکن RARE از آن سرقت شد.

این آسیب‌پذیری از یک تابع ناشی می‌شود که قرار بود تنها به آدرس‌های مشخص اجازه دهد ریشه مرکل (Merkle root) را که ساختار داده حیاتی برای تعیین موجودی استیکینگ کاربران است، تغییر دهند. اما منطق کد به اشتباه به هر آدرسی اجازه می‌داد تا با این تابع تعامل کند.

به گفته 0xAw، توسعه‌دهنده ارشد صرافی غیرمتمرکز بیس (Base) به‌نام ایلین بیس (Alien Base)، این اشتباه آنقدر واضح بود که چت جی پی تی هم می‌توانست آن را تشخیص دهد.

Relevant code in the SuperRare token
کد مرتبط در قرارداد استیکینگ توکن سوپر ریر منبع

حتی چت جی‌ پی تی هم این باگ را شناسایی می‌کرد

به گفته 0xAw:

چت جی‌ پی تی این باگ را شناسایی می‌کرد، هر توسعه‌دهنده نیمه‌‌حرفه‌ای سالیدیتی (Solidity) هم آن را تشخیص می‌داد. اساساً هر کسی که نگاه می‌کرد. احتمالاً هیچ‌کسی نگاه نکرده است.

جاناتان پرکینز (Jonathan Perkins)، یکی از بنیان‌گذاران سوپر رر، گفته است که هیچ‌گونه بودجه اصلی پروتکل از دست نرفته است و ضرر کاربرانی که از این هک آسیب دیده‌اند جبران خواهد شد. او افزود که به‌نظر می‌رسد ۶۱ کیف پول تحت تأثیر قرار گرفته‌اند. او گفت:

ما از این تجربه یاد گرفتیم و حالا تغییرات آینده از طریق یک فرایند بازبینی بسیار قوی‌تر عبور خواهند کرد.

کالبدشکافی یک آسیب‌پذیری

قرارداد استیکینگ SuperRare برای تعیین مجاز یا غیرمجاز بودن ریشه مرکل، آدرس‌ها را بررسی می‌کرد تا مشخص شود هر کدام از آن‌ها متعلق به مالک خود قرارداد هوشمند یا یک آدرس به‌خصوص نباشد. این منطق کاملاً برعکسِ چیزی بود که باید اجرا می‌شد و در نتیجه، به هر کسی اجازه می‌داد تا توکن‌های RARE استیک‌شده را از قرارداد خارج کند.

super rare code
خطی از کد که بررسی مربوطه در آن قرار دارد. منبع: کوین تلگراف

یک مهندس ارشد در شرکت بیمه ارز دیجیتال نکسوس میوچوال (Nexus Mutual) گفته است که:

تست‌های یونیت (Unit Tests) می‌توانستند این اشتباه را شناسایی کنند.

مایک تیوتین (Mike Tiutin)، معمار بلاک‌ چین و مدیر ارشد فناوری شرکت ای‌ام‌ال‌بات (AMLBot) نیز گفت «این یک اشتباه ساده از طرف توسعه‌دهنده است که توسط تست‌ها پوشش داده نشده بود (به همین دلیل، پوشش کامل تست‌ها بسیار مهم است)».

مدیرعامل شرکت ای‌ام‌ال‌بات، اسلاوا دمچوک (Slava Demchuk)، نیز همین نظر را داشت و گفت که «هیچ تست گسترده‌ای (یا برنامه‌ی کشف باگ با جایزه) وجود نداشت که بتواند قبل از استقرار، این مشکل را شناسایی کند». او افزود:

این یک یادآوری جدی است: در سیستم‌های غیر متمرکز، حتی یک اشتباه در حد یک کاراکتر می‌تواند پیامدهای بسیار سنگینی داشته باشد.

اگرچه پرکینز (هم‌بنیان‌گذار سوپر رر) تأکید کرده که قراردادها به لحاظ امنیتی بررسی شده بودند و تست یونیت را هم از سر گذرانده‌اند، اما پذیرفت که این باگ در مراحل پایانی توسعه وارد شده و در سناریوهای تست نهایی پوشش داده نشده بود:

یک یادآوری دردناک که چطور تغییرات کوچک در سیستم‌های پیچیده می‌توانند پیامدهای ناخواسته‌ای به‌همراه داشته باشند.