اتفاقية إقراض DeFi على شبكة Sui، بروتوكول Scallop، قامت بنشر إشعار بواقعة أمنية على حسابها الرسمي في X (@Scallop_io)، مؤكدةً أن المنصة تعرضت لهجوم. يذكر Scallop أن الفريق وجد عقدًا جانبيًا (side contract) مرتبطًا بحوض مكافآت sSUI spool تم استغلاله، ما أدى إلى خسارة نحو 150 ألف SUI. يؤكد Scallop أنه تم تجميد العقد المتأثر، وأن العقد الأساسي لا يزال آمنًا، وأن الأمر اقتصر على حوض مكافآت sSUI.
في التحديثات اللاحقة، أوضح Scallop كذلك: «تم فك تجميد العقد الأساسي، واستُعيدت جميع العمليات. لا علاقة لهذه المشكلة بالبروتوكول الأساسي، بل تقتصر على عقد مكافآت تم إهماله. لم تتأثر ودائع المستخدمين، وجميع الأموال آمنة، ووظائف الإيداع والسحب تعمل بشكل طبيعي مجددًا.» تعهد الفريق بمشاركة المزيد من التفاصيل، مع الاستمرار في المراقبة وتعزيز أمان البروتوكول.
عضو سابق في NEAR Vadim: المشكلة ناجمة عن حزمة قديمة قبل 17 شهرًا
وفيما يتعلق بهذه الحادثة، نشر المطور الأساسي السابق في NEAR Vadim (@zacodil) تحليلًا تقنيًا عميقًا على X، كاشفًا تفاصيل الثغرة. أشار Vadim إلى أن المهاجم كان يعرف بدقة أي استدعاء لحزمة مهملة كان ينبغي استخدامه. «ليس الكود الجاري تشغيله، وليس مسار SDK، بل نسخة قديمة V2 من نوفمبر 2023 تم تركها دون استخدام لعدة أشهر. إمّا أن يكون الأمر ناتجًا عن هندسة عكسية متعمقة، أو أن هناك من كان يعرف مسبقًا أين يبحث. وقد ظلت هذه الثغرة كامنة لمدة 17 شهرًا.
يشرح Vadim أن spool يتتبع فهرسًا يزداد مع تخصيص المكافآت. عند قيام كل حساب مستخدم بالإيداع (staking)، كان من المفترض تسجيل last_index في ذلك الوقت، بحيث تكون معادلة حساب النقاط التي يتم كسبها هي: كمية الإيداع × (current_index − last_index)، وأن المستخدم يمكنه فقط كسب المكافآت من وقت الانضمام فصاعدًا.
لكن في حزمة V2 المهملة، عند إنشاء spool_account جديد بالكامل، لم يتم تهيئة last_index وظل كما هو عند 0. لذلك عند تنفيذ update_points تصبح نتيجة الحساب: النقاط = كمية الإيداع × (current_index − 0) = كمية الإيداع × الفهرس التاريخي الكامل. يتم تسجيل المستخدم باعتباره قد تراكمت لديه جميع المكافآت منذ إنشاء spool في أغسطس 2023.
قدم Vadim بيانات محددة: نما فهرس spool خلال 20 شهرًا إلى 1.19 مليار. قام المهاجم بإيداع 136 ألف sSUI، فحصل فورًا على تسجيل 162 تريليون نقطة. وبما أن حوض المكافآت يعتمد نسبة تحويل 1:1 (البسط والمقام كلاهما 1)، فإن 162 تريليون نقطة تتحول مباشرة إلى مكافآت بقيمة 162 ألف SUI. لكن حوض المكافآت يحتوي فقط على 150 ألف SUI، لذا تم سحبه بالكامل.
جميع حوادث أمان السلسلة على مستوى أبريل وقعت في الأنظمة الطرفية المحيطة
يشرح Vadim أن المستخدمين العاديين يستخدمون الحزمة الجديدة عبر SDK، وقد تم إصلاح مشكلة مزامنة last_index في الحزمة الجديدة. أما لماذا ظلت حزمة V2 القديمة على السلسلة، فذلك لأن حزم Sui غير قابلة للتغيير (immutable). — بمجرد نشرها، ستظل كل نسخة قديمة قابلة للاستدعاء إلى الأبد. يستقبل كل من كائنَي Spool وRewardsPool المشتركان عمليات استدعاء من أي نسخة. يتجاوز المهاجم SDK ويستهدف مباشرة مسار كود النسخة القديمة.
يصنف Vadim ذلك على أنه «ثغرة من نوع حزم Sui القديمة المنسية». ويشير إلى أن طريقة الإصلاح الصحيحة تتطلب إضافة حقل إصدار إلى الكائن المشترك، وإدراج فحص assert!(version == CURRENT_VERSION) في كل دالة. بدون هذا الآلية، ستظل كل نسخة من الحزمة التي تم نشرها في الماضي سطح هجوم حيًا إلى الأبد.
ويشير Vadim كذلك إلى أن معظم حوادث الهجوم في هذا الشهر لم تقع في كود البروتوكول الأساسي نفسه، بل في الأنظمة الطرفية:
KelpDAO: البنية التحتية لـ RPC
Litecoin: طبقة الخصوصية MWEB
Aethir: التحكم بالوصول إلى المبدلات الطرفية
Scallop: حزمة قديمة تم نسيانها
هذه المقالة عن هجوم على بروتوكول إقراض DeFi على شبكة Sui Scallop، حيث أدت ثغرة في العقد القديم إلى سرقة 150 ألف SUI، ظهرت لأول مرة على أخبار السلسلة ABMedia.
مقالات ذات صلة
ويسترن يونيون (Western Union) — اجتماع تأكيد نتائج الربع الأول: سيتم إطلاق عملة مستقرة USDP في مايو
سُون يوتشن يطلق على TRON اسم أول شبكة مقاومة للهجمات الكمية على مستوى العالم، وسيتم إطلاق الشبكة الرئيسية في الربع الثالث من عام 2026
تجاوزت حملة DeFi United في جمع التبرعات 10.2 ألف وحدة ETH، وارتد AAVE إلى 100 دولار
ApeCoin 在黑胡子的赏金(Blackbeard's Bounty)第 3 季结束后将游戏控制权转交给社区