في 2 فبراير 2023 بعد الظهر، تعرض بروتوكول أوريون على شبكة إيثيريوم وشبكة باينانس لهجوم إعادة الدخول بسبب ثغرة في العقد، مما أدى إلى خسارة حوالي 2.9 مليون دولار. تشمل الخسائر الدقيقة 2,844,766 USDT على إيثيريوم و191,606 BUSD على شبكة باينانس.
تحليل عملية الهجوم
أنشأ المهاجم أولاً عقد Token، ثم قام بإجراء عمليات نقل وتفويض، استعدادًا للهجوم اللاحق. بعد ذلك، قام المهاجم بالاقتراض من خلال طريقة swap الخاصة بـ UNI-V2، واستدعى طريقة swapThroughOrionPool لعقد ExchangeWithAtomic لتبادل الرموز.
تم تعيين مسار التبادل إلى [USDC، توكن تم إنشاؤه بواسطة المهاجم، USDT]. خلال عملية التبادل، نظرًا لوجود وظيفة الاسترجاع في عقد توكن المهاجم، تمكن المهاجم من استخدام طريقة Transfer الخاصة بالتوكن لمتابعة استرجاع طريقة depositAsset لعقد ExchangeWithAtomic، مما أدى إلى تنفيذ هجوم إعادة الإدخال وزيادة مبلغ الإيداع باستمرار. في النهاية، أكمل المهاجم عملية الربح من خلال سحب الأموال.
! [تحليل هجوم إعادة دخول OrionProtocol باستخدام PoC](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
تحليل الثغرات
تتمثل جوهر الثغرة في وظيفة doSwapThroughOrionPool في عقد ExchangeWithAtomic. عند تنفيذ _doSwapTokens، توجد المشكلة التالية:
يتم تحديث متغير curBalance بعد عملية التحويل.
عدم اتباع نمط "الفحوصات-التأثيرات-التفاعلات" (Checks-Effects-Interactions).
استغل المهاجمون هذه الثغرة من خلال إضافة وظيفة استدعاء في دالة transfer لعقد توكن مزيف، مما يؤدي إلى استدعاء دالة depositAsset عند إجراء التحويل. وقد أدى ذلك إلى تحديث متغير curBalance بشكل غير صحيح، مما مكن المهاجمين من سحب أموال زائدة عبر دالة withdraw بعد سداد القرض الفوري.
! [تحليل هجوم إعادة دخول OrionProtocol مع PoC])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
! [تحليل هجوم إعادة دخول OrionProtocol مع PoC])https://img-cdn.gateio.im/webp-social/moments-7e21c34158a85d4c387fcdbec136d31b.webp(
! [تحليل هجوم إعادة دخول OrionProtocol باستخدام PoC])https://img-cdn.gateio.im/webp-social/moments-24819b5154419e86ea523a25a9101f67.webp(
! [تحليل هجوم إعادة دخول OrionProtocol مع PoC])https://img-cdn.gateio.im/webp-social/moments-7c4bde9d6a35da4304844a3bbb934fae.webp(
! [تحليل هجوم إعادة دخول OrionProtocol باستخدام PoC])https://img-cdn.gateio.im/webp-social/moments-7239f8886fe83c1da8b1b42545185811.webp(
! [تحليل هجوم إعادة الدخول OrionProtocol مع PoC])https://img-cdn.gateio.im/webp-social/moments-e5042932f0e1b7fa96e3f6e749231957.webp(
! [تحليل هجوم إعادة دخول OrionProtocol باستخدام PoC])https://img-cdn.gateio.im/webp-social/moments-4bd31735de09c63c490488e887118038.webp(
! [تحليل هجوم إعادة دخول OrionProtocol باستخدام PoC])https://img-cdn.gateio.im/webp-social/moments-cd401091e63ab21864f39cd650014b97.webp(
! [تحليل هجوم إعادة دخول OrionProtocol باستخدام PoC])https://img-cdn.gateio.im/webp-social/moments-e010d0f0c02fb8bbc648f755b0ac464c.webp(
! [تحليل هجوم إعادة الدخول OrionProtocol باستخدام PoC])https://img-cdn.gateio.im/webp-social/moments-f3c5f9416cfb9b7b791d86eeffb933be.webp(
تدفق الأموال
تأتي الأموال الأولية للمهاجم من حساب محفظة ساخنة على منصة تداول معينة. من بين 1,651 إيثريوم تم تحقيقها كأرباح، لا يزال 657.5 إيثريوم موجودًا في عنوان محفظة المهاجم، بينما تم تحويل الباقي من خلال خدمة خلط العملات.
نصائح للوقاية
لتجنب هجمات مماثلة، يجب على الفريق المشروع الانتباه إلى النقاط التالية:
يجب أن تأخذ تصميم العقد في الاعتبار الحالات الطارئة التي قد تنجم عن أنواع متعددة من الرموز وطرق الصرف.
الالتزام الصارم بمعايير الترميز "التحقق - التأثير - التفاعل"، لضمان إجراء الحكم أولاً، ثم تحديث متغير الحالة، وأخيراً تنفيذ الاستدعاءات الخارجية.
تنفيذ فحوصات أمان أكثر صرامة وقيود على العمليات الرئيسية التي تنطوي على تحويل الأموال.
إجراء تدقيق أمان العقود بشكل دوري، واكتشاف وإصلاح الثغرات المحتملة في الوقت المناسب.
تذكرنا هذه الحادثة مرة أخرى بأن الأمان هو أمر بالغ الأهمية في تطوير العقود الذكية. يجب على الجهات المسؤولة عن المشاريع أن تظل يقظة دائمًا وتتبنى تدابير حماية متعددة لتقليل مخاطر العقود إلى أدنى حد ممكن.
شاهد النسخة الأصلية
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تعرض OrionProtocol لهجوم إعادة دخول خسارة 2900000 دولار أمريكي USDT و BUSD
تحليل حادثة هجوم إعادة الدخول على OrionProtocol
في 2 فبراير 2023 بعد الظهر، تعرض بروتوكول أوريون على شبكة إيثيريوم وشبكة باينانس لهجوم إعادة الدخول بسبب ثغرة في العقد، مما أدى إلى خسارة حوالي 2.9 مليون دولار. تشمل الخسائر الدقيقة 2,844,766 USDT على إيثيريوم و191,606 BUSD على شبكة باينانس.
تحليل عملية الهجوم
أنشأ المهاجم أولاً عقد Token، ثم قام بإجراء عمليات نقل وتفويض، استعدادًا للهجوم اللاحق. بعد ذلك، قام المهاجم بالاقتراض من خلال طريقة swap الخاصة بـ UNI-V2، واستدعى طريقة swapThroughOrionPool لعقد ExchangeWithAtomic لتبادل الرموز.
تم تعيين مسار التبادل إلى [USDC، توكن تم إنشاؤه بواسطة المهاجم، USDT]. خلال عملية التبادل، نظرًا لوجود وظيفة الاسترجاع في عقد توكن المهاجم، تمكن المهاجم من استخدام طريقة Transfer الخاصة بالتوكن لمتابعة استرجاع طريقة depositAsset لعقد ExchangeWithAtomic، مما أدى إلى تنفيذ هجوم إعادة الإدخال وزيادة مبلغ الإيداع باستمرار. في النهاية، أكمل المهاجم عملية الربح من خلال سحب الأموال.
! [تحليل هجوم إعادة دخول OrionProtocol باستخدام PoC](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
تحليل الثغرات
تتمثل جوهر الثغرة في وظيفة doSwapThroughOrionPool في عقد ExchangeWithAtomic. عند تنفيذ _doSwapTokens، توجد المشكلة التالية:
استغل المهاجمون هذه الثغرة من خلال إضافة وظيفة استدعاء في دالة transfer لعقد توكن مزيف، مما يؤدي إلى استدعاء دالة depositAsset عند إجراء التحويل. وقد أدى ذلك إلى تحديث متغير curBalance بشكل غير صحيح، مما مكن المهاجمين من سحب أموال زائدة عبر دالة withdraw بعد سداد القرض الفوري.
! [تحليل هجوم إعادة دخول OrionProtocol مع PoC])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
! [تحليل هجوم إعادة دخول OrionProtocol مع PoC])https://img-cdn.gateio.im/webp-social/moments-7e21c34158a85d4c387fcdbec136d31b.webp(
! [تحليل هجوم إعادة دخول OrionProtocol باستخدام PoC])https://img-cdn.gateio.im/webp-social/moments-24819b5154419e86ea523a25a9101f67.webp(
! [تحليل هجوم إعادة دخول OrionProtocol مع PoC])https://img-cdn.gateio.im/webp-social/moments-7c4bde9d6a35da4304844a3bbb934fae.webp(
! [تحليل هجوم إعادة دخول OrionProtocol باستخدام PoC])https://img-cdn.gateio.im/webp-social/moments-7239f8886fe83c1da8b1b42545185811.webp(
! [تحليل هجوم إعادة الدخول OrionProtocol مع PoC])https://img-cdn.gateio.im/webp-social/moments-e5042932f0e1b7fa96e3f6e749231957.webp(
! [تحليل هجوم إعادة دخول OrionProtocol باستخدام PoC])https://img-cdn.gateio.im/webp-social/moments-4bd31735de09c63c490488e887118038.webp(
! [تحليل هجوم إعادة دخول OrionProtocol باستخدام PoC])https://img-cdn.gateio.im/webp-social/moments-cd401091e63ab21864f39cd650014b97.webp(
! [تحليل هجوم إعادة دخول OrionProtocol باستخدام PoC])https://img-cdn.gateio.im/webp-social/moments-e010d0f0c02fb8bbc648f755b0ac464c.webp(
! [تحليل هجوم إعادة الدخول OrionProtocol باستخدام PoC])https://img-cdn.gateio.im/webp-social/moments-f3c5f9416cfb9b7b791d86eeffb933be.webp(
تدفق الأموال
تأتي الأموال الأولية للمهاجم من حساب محفظة ساخنة على منصة تداول معينة. من بين 1,651 إيثريوم تم تحقيقها كأرباح، لا يزال 657.5 إيثريوم موجودًا في عنوان محفظة المهاجم، بينما تم تحويل الباقي من خلال خدمة خلط العملات.
نصائح للوقاية
لتجنب هجمات مماثلة، يجب على الفريق المشروع الانتباه إلى النقاط التالية:
تذكرنا هذه الحادثة مرة أخرى بأن الأمان هو أمر بالغ الأهمية في تطوير العقود الذكية. يجب على الجهات المسؤولة عن المشاريع أن تظل يقظة دائمًا وتتبنى تدابير حماية متعددة لتقليل مخاطر العقود إلى أدنى حد ممكن.