النسخة الشعبية: "ترجمة" بسيطة لتفسير تحليل المتسلل @CetusProtocol من قبل رئيس التكنولوجيا: يكشف هذا الهجوم عن مشكلة تجاوز عدد صحيح كلاسيكي ، والتي تتجلى في اقتطاع البيانات أثناء تحويل النوع. التفاصيل الفنية المفككة: 1) موقع الثغرة الأمنية: تحدث المشكلة في آلية تحويل النوع لوظيفة get_amount_by_liquidity ، ويؤدي تحويل الإرسال من U256 إلى U64 في فقدان البيانات عالي المستوى. 2) عملية الهجوم: 1. يمرر المهاجم كمية كبيرة من معلمات السيولة من خلال وظيفة add_liquidity ؛ 2. عدد الرموز المميزة B المطلوبة لحساب دالة get_delta_b استدعاء النظام ؛ 3. في عملية الحساب ، يتم ضرب بياني نوع U128 ، ويجب أن تكون النتيجة النظرية من نوع U256 ؛ عيب رئيسي: يتم إرسال نتيجة u256 إلى u64 عند إرجاع الدالة، مما يؤدي إلى اقتطاع بيانات 128 بت عالية المستوى. 3) تأثير الاستخدام: يمكن الآن إكمال حصة السيولة التي تطلبت في الأصل عددا كبيرا من الرموز المميزة لسك بعدد صغير جدا من الرموز المميزة. يحصل المهاجم على حصة كبيرة من السيولة بتكلفة منخفضة للغاية ، ثم يدرك مراجحة المجمع عن طريق تدمير جزء من السيولة. تشبيه بسيط: تماما مثل استخدام آلة حاسبة يمكنها عرض 8 أرقام فقط لحساب 1 مليار × 1 مليار ، يمكن لنتيجة الحساب المكون من 20 رقما عرض آخر 8 أرقام فقط ، وتختفي أول 12 رقما مباشرة. يستغل المهاجم هذه الثغرة الأمنية. لكي نكون واضحين: هذه الثغرة الأمنية لا علاقة لها ببنية الأمان الأساسية ل @SuiNetwork ، ولا يزال "المجد" الأمني للغة Move ذا مصداقية في الوقت الحالي. لماذا؟ تتمتع لغة Move بمزايا كبيرة من حيث إدارة الموارد وأمن النوع ، ويمكن أن تمنع بشكل فعال مشاكل الأمان منخفضة المستوى مثل الإنفاق المزدوج وتسرب الموارد. ومع ذلك ، هذه المرة يعد بروتوكول Cetus خطأ رياضيا على مستوى منطق التطبيق ، وليس عيبا في التصميم في لغة Move نفسها. على وجه التحديد ، لا يزال نظام نوع Move ، على الرغم من أنه صارم ، يعتمد على الحكم الصحيح للمطور في الصب الصريح. عندما يقوم برنامج بإجراء تحويل نوع بنشاط من U256 إلى U64 ، لا يمكن للمترجم معرفة ما إذا كان هذا متعمدا أو خطأ منطقيا. بالإضافة إلى ذلك ، لا علاقة لهذا الحادث الأمني بالوظائف الأساسية الأساسية ل Sui مثل آلية الإجماع ومعالجة المعاملات وإدارة الحالة. تقوم Sui Network فقط بتنفيذ تعليمات المعاملات المقدمة بواسطة بروتوكول Cetus بأمانة ، وتنبع الثغرة الأمنية من العيوب المنطقية لبروتوكول طبقة التطبيق نفسه. بصراحة ، لا يمكن لأي قدر من لغات البرمجة المتقدمة القضاء تماما على الأخطاء المنطقية في طبقة التطبيق. يمكن أن يمنع Move معظم المخاطر الأمنية الأساسية ، لكنه لا يمكن أن يحل محل المطورين بالتحقق من حدود منطق العمل وحماية التجاوز للعمليات الرياضية.
53.44K