في الآونة الأخيرة، تعرض مشروع MobiusDAO في نظام BNB Chain البيئي للاعتداء، حيث قام المعتدي من خلال ثغرة منطقية في عقد المشروع بصك كمية كبيرة من رموز MBU وبيعها لتحقيق الربح. قامت فريق أمان Beosin بتحليل الثغرات وتتبع الأموال في هذا الحدث، وشاركت النتائج كما يلي:
خطوات الهجوم التفصيلية
(1) المهاجمون نشروا أولاً عقد الهجوم (0x631adFF068D484Ce531Fb519Cda4042805521641)
، واستخدمت العقد لاستدعاء دالة الإيداع لعقد الوكيل Mobius 0x95e92B09b89cF31Fa9F1Eca4109A85F88EB08531، ثم قام عقد Mobius بصك أكثر من 9.7x10^15 من رموز MBU وإرسالها إلى عقد الهجوم.
(2) يقوم عقد الهجوم بعد استلام رموز MBU باستدعاء العقد المتعلق بـ PancakeSwap لبيع رموز MBU وتحقيق الربح.
تحليل الثغرات
تقوم دالة الإيداع في عقد Mobius بصك كمية مماثلة من رموز MBU وإرسالها إلى المودع بعد استلام الإيداع. في هذه الدالة، كلما قام المستخدم بإيداع WBNB، تقوم الدالة بالحصول على سعر BNB لحساب عدد رموز MBU التي يجب صكها وتحويلها.
سعر BNB يأتي من دالة getBNBPriceInUSDT، والتي تعيد السعر بدقة تصل إلى 18 منزلة عشرية. كما هو موضح في الصورة أعلاه، السعر المعاد حوالي 656 دولار.
نظرًا لأن العقد المنطقي لموبيوس لم يكن مفتوح المصدر، من خلال فك التشفير اكتشفنا أن الثغرة تحدث عندما تُعيد الدالة نتيجة بـ 18 رقمًا عشريًا، حيث يقوم العقد مرة أخرى بضرب هذه القيمة في 10^18، مما أدى إلى إنتاج عدد من رموز MBU أعلى بمقدار 10^18 مرة مقارنة بالنتيجة الطبيعية.
تتبع الأموال المسروقة
تتبعت Beosin Trace الأموال المسروقة ووجدت أن الأموال المسروقة تم تحويلها إلى حوالي 2.15 مليون USDT من رموز USDT من قبل المهاجمين ، منها 1.35 مليون USDT تم تحويلها إلى BNB وإيداعها في Tornado Cash ، وتم استبدال 800,000 USDT المتبقية ب ETH على سلسلة Ethereum من خلال سلسلة متقاطعة ، ثم تم إيداعها في Tornado Cash. أضافت Beosin Trace عناوين متعلقة بالقراصنة إلى قاعدة بيانات المتسللين وستستمر في تعقبها في المستقبل.
وفقًا لتحليل Beosin Trace، تم تحويل جميع الأموال المسروقة إلى Tornado Cash
ملخص
كانت جوهر الهجوم هو استغلال المهاجم لخطأ حسابي في عقد المشروع، مما أدى إلى سك كمية ضخمة من الرموز وبيعها لتحقيق أرباح. كان من السهل اكتشاف هذا الخطأ البرمجي، ولكن فريق مشروع Mobius لم يقم سابقاً بإجراء اختبارات شاملة على الكود لاكتشاف هذا الخطأ، ولم يتم إجراء تدقيق، مما أدى إلى خسائر تجاوزت 2.15 مليون دولار. أوصى فريق أمان Beosin بأن يقوم فريق المشروع بتعزيز تدقيق كود العقد واختبارات الأمان، لتفادي حدوث حالات مشابهة.
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
خسارة 215 مليون دولار! تحليل ثغرة حدث MobiusDAO وتتبع الأموال المسروقة
كتبه: Beosin
في الآونة الأخيرة، تعرض مشروع MobiusDAO في نظام BNB Chain البيئي للاعتداء، حيث قام المعتدي من خلال ثغرة منطقية في عقد المشروع بصك كمية كبيرة من رموز MBU وبيعها لتحقيق الربح. قامت فريق أمان Beosin بتحليل الثغرات وتتبع الأموال في هذا الحدث، وشاركت النتائج كما يلي:
خطوات الهجوم التفصيلية
(1) المهاجمون نشروا أولاً عقد الهجوم (0x631adFF068D484Ce531Fb519Cda4042805521641)
، واستخدمت العقد لاستدعاء دالة الإيداع لعقد الوكيل Mobius 0x95e92B09b89cF31Fa9F1Eca4109A85F88EB08531، ثم قام عقد Mobius بصك أكثر من 9.7x10^15 من رموز MBU وإرسالها إلى عقد الهجوم.
هاش المعاملة الهجومية: 0x2a65254b41b42f39331a0bcc9f893518d6b106e80d9a476b8ca3816325f4a150
(2) يقوم عقد الهجوم بعد استلام رموز MBU باستدعاء العقد المتعلق بـ PancakeSwap لبيع رموز MBU وتحقيق الربح.
تحليل الثغرات
تقوم دالة الإيداع في عقد Mobius بصك كمية مماثلة من رموز MBU وإرسالها إلى المودع بعد استلام الإيداع. في هذه الدالة، كلما قام المستخدم بإيداع WBNB، تقوم الدالة بالحصول على سعر BNB لحساب عدد رموز MBU التي يجب صكها وتحويلها.
سعر BNB يأتي من دالة getBNBPriceInUSDT، والتي تعيد السعر بدقة تصل إلى 18 منزلة عشرية. كما هو موضح في الصورة أعلاه، السعر المعاد حوالي 656 دولار.
نظرًا لأن العقد المنطقي لموبيوس لم يكن مفتوح المصدر، من خلال فك التشفير اكتشفنا أن الثغرة تحدث عندما تُعيد الدالة نتيجة بـ 18 رقمًا عشريًا، حيث يقوم العقد مرة أخرى بضرب هذه القيمة في 10^18، مما أدى إلى إنتاج عدد من رموز MBU أعلى بمقدار 10^18 مرة مقارنة بالنتيجة الطبيعية.
تتبع الأموال المسروقة
تتبعت Beosin Trace الأموال المسروقة ووجدت أن الأموال المسروقة تم تحويلها إلى حوالي 2.15 مليون USDT من رموز USDT من قبل المهاجمين ، منها 1.35 مليون USDT تم تحويلها إلى BNB وإيداعها في Tornado Cash ، وتم استبدال 800,000 USDT المتبقية ب ETH على سلسلة Ethereum من خلال سلسلة متقاطعة ، ثم تم إيداعها في Tornado Cash. أضافت Beosin Trace عناوين متعلقة بالقراصنة إلى قاعدة بيانات المتسللين وستستمر في تعقبها في المستقبل.
وفقًا لتحليل Beosin Trace، تم تحويل جميع الأموال المسروقة إلى Tornado Cash
ملخص
كانت جوهر الهجوم هو استغلال المهاجم لخطأ حسابي في عقد المشروع، مما أدى إلى سك كمية ضخمة من الرموز وبيعها لتحقيق أرباح. كان من السهل اكتشاف هذا الخطأ البرمجي، ولكن فريق مشروع Mobius لم يقم سابقاً بإجراء اختبارات شاملة على الكود لاكتشاف هذا الخطأ، ولم يتم إجراء تدقيق، مما أدى إلى خسائر تجاوزت 2.15 مليون دولار. أوصى فريق أمان Beosin بأن يقوم فريق المشروع بتعزيز تدقيق كود العقد واختبارات الأمان، لتفادي حدوث حالات مشابهة.