تعرضت Euler Finance لهجوم القرض الفوري، وخسرت ما يقرب من 200 مليون دولار
في 13 مارس 2023، تعرض مشروع Euler Finance لهجوم قرض فوري كبير. وفقًا لبيانات المراقبة على السلسلة، استخدم المهاجم ثغرة في عقد المشروع، وتمكن من سرقة حوالي 197 مليون دولار من الأموال، بما في ذلك 6 أنواع مختلفة من الرموز.
تحليل عملية الهجوم
المهاجم حصل أولاً على 30000000 DAI من القروض السريعة من منصة اقتراض معينة، ثم نشر عقدين رئيسيين: واحد لعمليات الاقتراض، والآخر للتسوية.
خطوات الهجوم الرئيسية هي كما يلي:
قم بتخزين 20000000 DAI في عقد بروتوكول Euler، واحصل على 19.5 مليون eDAI.
استخدام خاصية الرفع المالي 10x في بروتوكول Euler لاقتراض 195.6 مليون eDAI و200 مليون dDAI.
استخدام 10 ملايين DAI المتبقية لسداد جزء من الديون، وإحراق الكمية المقابلة من dDAI.
اقرض مرة أخرى نفس الكمية من eDAI و dDAI.
من خلال دالة donateToReserves، تبرع بمبلغ 100 مليون eDAI، ثم استدعاء دالة liquidate للتصفية، للحصول على 310 مليون dDAI و250 مليون eDAI.
أخيرًا، تم سحب 38.9 مليون DAI، وإعادة 30 مليون القروض السريعة، وصافي الربح حوالي 8.87 مليون DAI.
تحليل أسباب الثغرات
تتمثل الثغرة الأساسية في هذا الهجوم في عدم وجود فحص السيولة الضروري في دالة donateToReserves ضمن عقد Euler Finance. مقارنةً بالوظائف الرئيسية الأخرى (مثل دالة mint)، لم تقم دالة donateToReserves بتنفيذ عملية checkLiquidity، مما سمح للمهاجمين بالتلاعب بحالة حساباتهم لتتوافق مع شروط التصفية.
في الظروف العادية، ستقوم دالة checkLiquidity باستدعاء وحدة RiskManager، لضمان أن عدد eToken الخاص بالمستخدم يظل دائمًا أكبر من عدد dToken. ومع ذلك، نظرًا لافتقار دالة donateToReserves لهذه الخطوة الحاسمة، تمكن المهاجمون من تجاوز آلية الأمان، مما أدى إلى تحقيق أرباح غير مشروعة.
نصائح الأمان
في مواجهة هذا النوع من الهجمات، يجب على مشاريع البلوكشين أن:
إجراء تدقيق أمني شامل قبل إطلاق العقد لضمان جودة وأمان الكود.
التركيز بشكل خاص على مراحل رئيسية مثل سداد الأموال والكشف عن السيولة وتسوية الديون في مشاريع الإقراض.
تأكد من أن جميع الوظائف التي قد تؤثر على حالة أصول المستخدم تتضمن خطوات الفحص الأمني الضرورية.
إجراء مراجعة دورية للكود وفحص الثغرات، وإصلاح المخاطر المحتملة في الوقت المناسب.
النظر في إدخال آلية التوقيع المتعدد أو قفل الوقت كإجراءات أمان إضافية لتوفير فترة عازلة للتعامل مع الحالات الطارئة.
تسلط هذه الحادثة الضوء مرة أخرى على أهمية أمان العقود الذكية. يجب على الفرق المطورة أن تضع الأمان دائمًا في المقدمة، من خلال الممارسات الأمنية المستمرة والابتكار التكنولوجي، لبناء نظام بيئي Web3 أكثر أمانًا وموثوقية.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
تعرضت Euler Finance لهجوم القرض الفوري بقيمة 1.97 مليار دولار حيث يوجد ثغرة في دالة donateToReserves.
تعرضت Euler Finance لهجوم القرض الفوري، وخسرت ما يقرب من 200 مليون دولار
في 13 مارس 2023، تعرض مشروع Euler Finance لهجوم قرض فوري كبير. وفقًا لبيانات المراقبة على السلسلة، استخدم المهاجم ثغرة في عقد المشروع، وتمكن من سرقة حوالي 197 مليون دولار من الأموال، بما في ذلك 6 أنواع مختلفة من الرموز.
تحليل عملية الهجوم
المهاجم حصل أولاً على 30000000 DAI من القروض السريعة من منصة اقتراض معينة، ثم نشر عقدين رئيسيين: واحد لعمليات الاقتراض، والآخر للتسوية.
خطوات الهجوم الرئيسية هي كما يلي:
قم بتخزين 20000000 DAI في عقد بروتوكول Euler، واحصل على 19.5 مليون eDAI.
استخدام خاصية الرفع المالي 10x في بروتوكول Euler لاقتراض 195.6 مليون eDAI و200 مليون dDAI.
استخدام 10 ملايين DAI المتبقية لسداد جزء من الديون، وإحراق الكمية المقابلة من dDAI.
اقرض مرة أخرى نفس الكمية من eDAI و dDAI.
من خلال دالة donateToReserves، تبرع بمبلغ 100 مليون eDAI، ثم استدعاء دالة liquidate للتصفية، للحصول على 310 مليون dDAI و250 مليون eDAI.
أخيرًا، تم سحب 38.9 مليون DAI، وإعادة 30 مليون القروض السريعة، وصافي الربح حوالي 8.87 مليون DAI.
تحليل أسباب الثغرات
تتمثل الثغرة الأساسية في هذا الهجوم في عدم وجود فحص السيولة الضروري في دالة donateToReserves ضمن عقد Euler Finance. مقارنةً بالوظائف الرئيسية الأخرى (مثل دالة mint)، لم تقم دالة donateToReserves بتنفيذ عملية checkLiquidity، مما سمح للمهاجمين بالتلاعب بحالة حساباتهم لتتوافق مع شروط التصفية.
في الظروف العادية، ستقوم دالة checkLiquidity باستدعاء وحدة RiskManager، لضمان أن عدد eToken الخاص بالمستخدم يظل دائمًا أكبر من عدد dToken. ومع ذلك، نظرًا لافتقار دالة donateToReserves لهذه الخطوة الحاسمة، تمكن المهاجمون من تجاوز آلية الأمان، مما أدى إلى تحقيق أرباح غير مشروعة.
نصائح الأمان
في مواجهة هذا النوع من الهجمات، يجب على مشاريع البلوكشين أن:
إجراء تدقيق أمني شامل قبل إطلاق العقد لضمان جودة وأمان الكود.
التركيز بشكل خاص على مراحل رئيسية مثل سداد الأموال والكشف عن السيولة وتسوية الديون في مشاريع الإقراض.
تأكد من أن جميع الوظائف التي قد تؤثر على حالة أصول المستخدم تتضمن خطوات الفحص الأمني الضرورية.
إجراء مراجعة دورية للكود وفحص الثغرات، وإصلاح المخاطر المحتملة في الوقت المناسب.
النظر في إدخال آلية التوقيع المتعدد أو قفل الوقت كإجراءات أمان إضافية لتوفير فترة عازلة للتعامل مع الحالات الطارئة.
تسلط هذه الحادثة الضوء مرة أخرى على أهمية أمان العقود الذكية. يجب على الفرق المطورة أن تضع الأمان دائمًا في المقدمة، من خلال الممارسات الأمنية المستمرة والابتكار التكنولوجي، لبناء نظام بيئي Web3 أكثر أمانًا وموثوقية.