في 2 فبراير 2023 الساعة 15:40:20 بالتوقيت العالمي المنسق، تعرض عقد OrionProtocol على شبكة الإيثيريوم وسلسلة بينانس الذكية لهجوم إعادة دخول بسبب وجود ثغرة. حقق المهاجمون أرباحًا بلغت 2,844,766 USDT على سلسلة الإيثيريوم و 191,606 BUSD على سلسلة بينانس الذكية، بمجموع تقريبي قدره 2.9 مليون دولار.
تحليل عملية الهجوم
قام المهاجمون أولاً بنشر عقد توكن مخصص، وأجروا عمليات التحويل والتفويض ذات الصلة، استعدادًا للهجوم اللاحق.
بعد ذلك، استخدم المهاجم طريقة swap الخاصة بـ DEX معين لإجراء قرض، واستدعى طريقة ExchangeWithAtomic.swapThroughOrionPool الخاصة بـ OrionProtocol لتبادل الرموز. تم تعيين مسار التبادل إلى [USDC، رمز المهاجم، USDT].
خلال عملية الصرف، نظرًا لأن عقد التوكن الذي أنشأه المعتدي يحتوي على منطق رد الاتصال، فإن عملية النقل ستؤدي إلى استدعاء إعادة الدخول لطريقة ExchangeWithAtomic.depositAsset، مما يؤدي إلى تراكم المبلغ المودع عدة مرات. في النهاية، يكمل المعتدي الربح من خلال عملية السحب.
تدفق الأموال
تأتي الأموال الأولية للمهاجم من حساب المحفظة الساخنة لمنصة تداول معينة. من بين 1,651 ETH التي تم جنيها، لا يزال 657.5 ETH محجوزًا في عنوان محفظة المهاجم، بينما تم تحويل الباقي عبر خدمة خلط العملات.
تكمن المشكلة الأساسية في دالة doSwapThroughOrionPool لعقد ExchangeWithAtomic. تقوم هذه الدالة بتحديث متغير curBalance بعد تنفيذ تحويل الـ Token، مما يخلق شروطاً لهجوم إعادة الإدخال. يستغل المهاجمون دالة transfer الخاصة بـ Token مخصص لاستدعاء دالة depositAsset، مما يؤدي إلى تحديث غير صحيح لـ curBalance. في النهاية، بعد سداد القرض الفوري، قام المهاجمون بسحب الأموال الزائدة من خلال دالة withdraw.
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تعرض OrionProtocol لهجوم إعادة الدخول وخسارة 2.9 مليون دولار
تحليل حدث هجوم إعادة الدخول على OrionProtocol
في 2 فبراير 2023 الساعة 15:40:20 بالتوقيت العالمي المنسق، تعرض عقد OrionProtocol على شبكة الإيثيريوم وسلسلة بينانس الذكية لهجوم إعادة دخول بسبب وجود ثغرة. حقق المهاجمون أرباحًا بلغت 2,844,766 USDT على سلسلة الإيثيريوم و 191,606 BUSD على سلسلة بينانس الذكية، بمجموع تقريبي قدره 2.9 مليون دولار.
تحليل عملية الهجوم
قام المهاجمون أولاً بنشر عقد توكن مخصص، وأجروا عمليات التحويل والتفويض ذات الصلة، استعدادًا للهجوم اللاحق.
بعد ذلك، استخدم المهاجم طريقة swap الخاصة بـ DEX معين لإجراء قرض، واستدعى طريقة ExchangeWithAtomic.swapThroughOrionPool الخاصة بـ OrionProtocol لتبادل الرموز. تم تعيين مسار التبادل إلى [USDC، رمز المهاجم، USDT].
خلال عملية الصرف، نظرًا لأن عقد التوكن الذي أنشأه المعتدي يحتوي على منطق رد الاتصال، فإن عملية النقل ستؤدي إلى استدعاء إعادة الدخول لطريقة ExchangeWithAtomic.depositAsset، مما يؤدي إلى تراكم المبلغ المودع عدة مرات. في النهاية، يكمل المعتدي الربح من خلال عملية السحب.
تدفق الأموال
تأتي الأموال الأولية للمهاجم من حساب المحفظة الساخنة لمنصة تداول معينة. من بين 1,651 ETH التي تم جنيها، لا يزال 657.5 ETH محجوزًا في عنوان محفظة المهاجم، بينما تم تحويل الباقي عبر خدمة خلط العملات.
! تحليل هجوم إعادة دخول OrionProtocol مع PoC
تحليل الثغرات
تكمن المشكلة الأساسية في دالة doSwapThroughOrionPool لعقد ExchangeWithAtomic. تقوم هذه الدالة بتحديث متغير curBalance بعد تنفيذ تحويل الـ Token، مما يخلق شروطاً لهجوم إعادة الإدخال. يستغل المهاجمون دالة transfer الخاصة بـ Token مخصص لاستدعاء دالة depositAsset، مما يؤدي إلى تحديث غير صحيح لـ curBalance. في النهاية، بعد سداد القرض الفوري، قام المهاجمون بسحب الأموال الزائدة من خلال دالة withdraw.
! تحليل هجوم إعادة دخول OrionProtocol مع PoC
! تحليل هجوم إعادة دخول OrionProtocol باستخدام PoC
! تحليل هجوم إعادة دخول OrionProtocol مع PoC
! تحليل هجوم إعادة دخول OrionProtocol باستخدام PoC
! تحليل هجوم إعادة دخول OrionProtocol باستخدام PoC
! تحليل هجوم إعادة دخول OrionProtocol باستخدام PoC
! تحليل هجوم إعادة دخول OrionProtocol باستخدام PoC
! تحليل هجوم إعادة الدخول OrionProtocol باستخدام PoC
نصائح الأمان
يجب أخذ المخاطر الأمنية المحتملة الناتجة عن تصميم العقود التي تأخذ في الاعتبار أنواع متعددة من الرموز ومسارات الصرف في الاعتبار.
اتبع نمط "التحقق - التأثيرات - التفاعلات" (Checks-Effects-Interactions) لكتابة كود العقد، أي ابدأ بفحص الشروط، ثم تحديث متغيرات الحالة، وأخيراً قم بتنفيذ المكالمات الخارجية.
تنفيذ قفل إعادة الدخول في الدوال الرئيسية لمنع هجمات إعادة الدخول.
يجب إجراء تدقيق أمان صارم وإدارة القوائم البيضاء لعقود الرموز التي يتم استدعاؤها من الخارج.
إجراء تدقيق أمان العقود بشكل دوري، واكتشاف وإصلاح الثغرات المحتملة في الوقت المناسب.
من خلال اتخاذ هذه التدابير، يمكن تقليل مخاطر تعرض العقود الذكية للهجوم بشكل فعال، وزيادة الأمان العام للمشروع.