
المصدر: Sharkteam
في 30 كانون الثاني (يناير) 2024 ، تعرض MIM_SPELL للهجوم من خلال Lightning Loan.
أجرى Sharkteam تحليلًا فنيًا للحادث في أقرب وقت ممكن ويلخص وسائل الاحتياطات الأمنية.
1. تحليل المعاملات الهجوم
عنوان الهجوم:
0x87F585809CE79AE39A5FA0C7C96D0D159EB678C9
عقد الهجوم:
0xE1091D17473B049CCCD65C54F7167DA85B77A45
0x13AF445F81B0DECA5DCB2BE6C691F545C95912
0xe59b54a9e37ab69f6e9312a9b3f7253ee184e5a
التعاقد مع المهاجمة:
0x7259E152103756E1616A7AE982353C3751A6A90
معاملة الهجوم:
0x26A83DB7E288838DD9FEE6FB7314AE58DCC6AEE9A20BF224C386FF5E80F7E4CF2
0xDB4616B89AD82062787A4E924D520639791302476484B9A6ECA5126F79B6D8777
عملية الهجوم:
1. قام المهاجم (0x87F58580) باستعارة 300000 رمز مميز من خلال قرض البرق.
2. ثم أرسل 240،000 رمز مميز إلى العقد الذي تم الهجوم (0x7259E1520) للخطوة التالية لسداد استعارة المستخدمين.
3. المهاجم (0x87F58580) ثم دعا وظيفة RepayFrall لسداد استعارة المستخدمين الآخرين ، ثم دعا وظيفة السداد لسداد استعارة المستخدمين الآخرين بالترتيب.
4. بعد تقليل المتغيرات المرنة إلى 0 ، يقوم المهاجم (0x87F58580) بإنشاء عقد هجوم جديد (0xE59B54A9) ويدعو باستمرار مكالمات الاقتراض ووظيفة السداد حتى مرنة = 0 ، قاعدة = 120080183881881866666666652150497288.
5. المهاجم اللاحق (0x87F58580) يستدعي وظيفة السحب لوظيفة الاقتراض واستعارة عقد Degenbox 5000047 MIM.
6. أعاد المهاجم (0x87F58580) وظيفة قرض Lightning وحولت 4400،000 رمز MIM إلى 1807 ETH ، وقد حققت هذه الصفقة ربحًا يبلغ حوالي 450 واط.
ثانياً ، تحليل الضعف
جوهر الهجوم هو أن دقة متغير الاقتراض يتم حسابها ، بحيث تكون نسبة القيم المرنة والأساسية المتغيرة الرئيسية غير متوازنة ، مما يؤدي إلى مشاكل عند حساب عدد القروض العقارية والاقتراض ، وفي نهاية المطاف استعارت الرمز المميز للمحاكاة.
تستخدم وظيفة الاقتراض ووظيفة السداد في العقد الذي تم الهجوم (0x7259E1520) الطريقة التصاعدية لحساب المتغيرين من المرونة والقاعدة.
قام المهاجم (0x87F58580) أولاً بتعيين المتغيرات المرنة والمتغيرات الأساسية إلى 0 و 97 عن طريق سداد استعارة المستخدم الأخرى.
بعد ذلك ، يتم استدعاء وظيفة الاقتراض ووظيفة السداد بشكل مستمر ومبلغ المعلمة هو 1. عندما تستدعي وظيفة الاقتراض أولاً وظيفة الاقتراض ، ما سبق إذا تم تنفيذ المنطق وإعادته إلى وظيفة إضافة عند مرونة = 0.هذا سوف يسبب مرونة = 1 ، قاعدة = 98.
المهاجم (0x87F58580) ثم يستدعي وظيفة الاقتراض وتم نقله إلى 1. لأن المرونة = 1 سوف تنفذ منطق آخر ، فإن قيمة الإرجاع المحسوبة هي 98. عند العودة إلى وظيفة إضافة ، مرنة = 2 ، يكون المتغير الأساسي هو 196.
ولكن في هذا الوقت ، دعا المهاجم (0x87F58580) وظيفة السداد وتم تمريره إلى 1. منذ مرونة = 2 ، سيتم تنفيذ المنطق الآخر. تغيير متغير مرة أخرى 1 ، والمتغير الأساسي هو 195.
يمكن أن نرى أنه بعد تجربة حلقة المساحة للاقتراض ، تظل المتغيرات المرنة دون تغيير ويتضاعف المتغير الأساسي تقريبًا. أخيرًا ، اجعل مرنة = 0 قاعدة = 120080183810681886665215049728.
عندما تكون النسبة بين المتغيرات المرنة والقاعدة خللًا خطيرًا ، يمكن إضافة المهاجم (0x87F58580) مع القليل من الرهن العقاري لاستعارة عدد كبير من الرموز المميزة من خلال القيود في معدل المذيبات.
3. اقتراح السلامة
استجابة لهذا الهجوم ، يجب أن نتبع الاحتياطات التالية أثناء عملية التطوير:
1. عند حساب المنطق ذي الصلة لدقة التنمية ، فكر بعناية في الدقة والوضع برمته.
2. قبل إطلاق المشروع ، يحتاج فريق التدقيق المحترف الثالث إلى إجراء عمليات تدقيق في العقود الذكية.