في 2 فبراير 2023 بعد الظهر، تعرض بروتوكول أوريون على إيثريوم وسلسلة بينانس الذكية لهجوم إعادة دخول بسبب ثغرة في العقد، مما أسفر عن خسارة إجمالية تبلغ حوالي 2.9 مليون دولار من الأصول المشفرة، بما في ذلك 2,844,766 USDT على إيثريوم و 191,606 BUSD على سلسلة بينانس الذكية.
تحليل عملية الهجوم
قام المهاجمون أولاً بنشر عقد توكن مخصص، وأجروا التحويلات والتفويضات اللازمة استعدادًا للهجوم التالي. بعد ذلك، استخدم المهاجمون وظيفة التبديل في DEX معين للاستعارة وتم استدعاء طريقة ExchangeWithAtomic.swapThroughOrionPool من OrionProtocol لتبادل التوكنات. تم تعيين مسار التبادل إلى [USDC، توكن المهاجم، USDT].
خلال عملية التبادل، استغل عقد توكن الخاص بالمهاجم دالة transfer لاستدعاء طريقة ExchangeWithAtomic.depositAsset، مما أدى إلى تنفيذ هجوم إعادة الدخول. ونتيجة لذلك، تم حساب مبلغ الإيداع بشكل مكرر، وتمكن المهاجم بعد ذلك من الحصول على أرباح زائدة من خلال عمليات السحب.
! [تحليل هجوم إعادة دخول OrionProtocol باستخدام PoC](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
تدفق الأموال
تأتي الأموال الأولية للمهاجم من المحفظة الساخنة لمنصة تداول معينة. من بين 1,651 ETH التي حققها المهاجم، لا يزال 657.5 ETH في عنوان محفظة المهاجم، بينما تم تحويل الباقي عبر خدمة خلط.
! [تحليل هجوم إعادة دخول OrionProtocol مع PoC])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
تحليل الثغرات
توجد ثغرة جوهرية في وظائف doSwapThroughOrionPool و _doSwapTokens. تكمن المشكلة الرئيسية في أن العقد يقوم بتحديث متغير curBalance بعد تنفيذ عملية التحويل، مما يخلق ظروفًا لهجمات إعادة الإدخال. يقوم المهاجم من خلال إضافة منطق الاستدعاء في دالة transfer الخاصة بالتوكن المخصص بجعل دالة depositAsset تُستدعى بشكل متكرر، مما يؤدي إلى تحديث curBalance بشكل غير صحيح.
![تحليل هجوم إعادة الدخول بروتوكول أوريون مع 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(
![تحليل هجوم إعادة الدخول على بروتوكول أوريون مع PoC])https://img-cdn.gateio.im/webp-social/moments-e010d0f0c02fb8bbc648f755b0ac464c.webp(
! [تحليل هجوم إعادة الدخول OrionProtocol باستخدام PoC])https://img-cdn.gateio.im/webp-social/moments-f3c5f9416cfb9b7b791d86eeffb933be.webp(
نصائح للوقاية
اتبع نمط "التحقق - التأثير - التفاعل" (Checks-Effects-Interactions) لضمان تحديث متغيرات الحالة قبل الاستدعاءات الخارجية.
تنفيذ قفل إعادة الدخول، لمنع استدعاء الدالة مرة أخرى أثناء تنفيذها.
النظر في جميع أنواع الرموز ومسارات التبادل التي قد تحمل مخاطر أمنية.
تعزيز قيود ومراقبة الاستدعاءات الخارجية، خاصة تلك المتعلقة بعمليات نقل الأموال.
إجراء تدقيقات أمنية دورية لاكتشاف وإصلاح الثغرات المحتملة في الوقت المناسب.
تُبرز هذه الحادثة مرة أخرى أهمية الالتزام الصارم بمعايير البرمجة الآمنة عند تطوير العقود الذكية. يجب على فريق المشروع أن يولي اهتمامًا مستمرًا لأمان العقود، وأن يتخذ تدابير متعددة لحماية أنفسهم، لتقليل مخاطر التعرض للهجمات إلى الحد الأدنى.
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تعرض OrionProtocol لهجوم إعادة الدخول مما أدى إلى خسارة 2.9 مليون دولار من أصول التشفير
تحليل حادثة هجوم إعادة الإدخال على OrionProtocol
في 2 فبراير 2023 بعد الظهر، تعرض بروتوكول أوريون على إيثريوم وسلسلة بينانس الذكية لهجوم إعادة دخول بسبب ثغرة في العقد، مما أسفر عن خسارة إجمالية تبلغ حوالي 2.9 مليون دولار من الأصول المشفرة، بما في ذلك 2,844,766 USDT على إيثريوم و 191,606 BUSD على سلسلة بينانس الذكية.
تحليل عملية الهجوم
قام المهاجمون أولاً بنشر عقد توكن مخصص، وأجروا التحويلات والتفويضات اللازمة استعدادًا للهجوم التالي. بعد ذلك، استخدم المهاجمون وظيفة التبديل في DEX معين للاستعارة وتم استدعاء طريقة ExchangeWithAtomic.swapThroughOrionPool من OrionProtocol لتبادل التوكنات. تم تعيين مسار التبادل إلى [USDC، توكن المهاجم، USDT].
خلال عملية التبادل، استغل عقد توكن الخاص بالمهاجم دالة transfer لاستدعاء طريقة ExchangeWithAtomic.depositAsset، مما أدى إلى تنفيذ هجوم إعادة الدخول. ونتيجة لذلك، تم حساب مبلغ الإيداع بشكل مكرر، وتمكن المهاجم بعد ذلك من الحصول على أرباح زائدة من خلال عمليات السحب.
! [تحليل هجوم إعادة دخول OrionProtocol باستخدام PoC](https://img-cdn.gateio.im/webp-social/moments-730464b2d4d7f6e0ff21a0289a2d5d68.webp0192837465674839201
تدفق الأموال
تأتي الأموال الأولية للمهاجم من المحفظة الساخنة لمنصة تداول معينة. من بين 1,651 ETH التي حققها المهاجم، لا يزال 657.5 ETH في عنوان محفظة المهاجم، بينما تم تحويل الباقي عبر خدمة خلط.
! [تحليل هجوم إعادة دخول OrionProtocol مع PoC])https://img-cdn.gateio.im/webp-social/moments-caac189901b7aaad5abd8be30bb4361a.webp(
تحليل الثغرات
توجد ثغرة جوهرية في وظائف doSwapThroughOrionPool و _doSwapTokens. تكمن المشكلة الرئيسية في أن العقد يقوم بتحديث متغير curBalance بعد تنفيذ عملية التحويل، مما يخلق ظروفًا لهجمات إعادة الإدخال. يقوم المهاجم من خلال إضافة منطق الاستدعاء في دالة transfer الخاصة بالتوكن المخصص بجعل دالة depositAsset تُستدعى بشكل متكرر، مما يؤدي إلى تحديث curBalance بشكل غير صحيح.
![تحليل هجوم إعادة الدخول بروتوكول أوريون مع 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(
![تحليل هجوم إعادة الدخول على بروتوكول أوريون مع PoC])https://img-cdn.gateio.im/webp-social/moments-e010d0f0c02fb8bbc648f755b0ac464c.webp(
! [تحليل هجوم إعادة الدخول OrionProtocol باستخدام PoC])https://img-cdn.gateio.im/webp-social/moments-f3c5f9416cfb9b7b791d86eeffb933be.webp(
نصائح للوقاية
اتبع نمط "التحقق - التأثير - التفاعل" (Checks-Effects-Interactions) لضمان تحديث متغيرات الحالة قبل الاستدعاءات الخارجية.
تنفيذ قفل إعادة الدخول، لمنع استدعاء الدالة مرة أخرى أثناء تنفيذها.
النظر في جميع أنواع الرموز ومسارات التبادل التي قد تحمل مخاطر أمنية.
تعزيز قيود ومراقبة الاستدعاءات الخارجية، خاصة تلك المتعلقة بعمليات نقل الأموال.
إجراء تدقيقات أمنية دورية لاكتشاف وإصلاح الثغرات المحتملة في الوقت المناسب.
تُبرز هذه الحادثة مرة أخرى أهمية الالتزام الصارم بمعايير البرمجة الآمنة عند تطوير العقود الذكية. يجب على فريق المشروع أن يولي اهتمامًا مستمرًا لأمان العقود، وأن يتخذ تدابير متعددة لحماية أنفسهم، لتقليل مخاطر التعرض للهجمات إلى الحد الأدنى.