تحليل حادثة هجوم بقيمة 300,000 دولار داخل السلسلة الناجمة عن ثغرة التخزين اللحظي
في 30 مارس 2025، تعرض مشروع تداول الرافعة المالية على شبكة إيثيريوم لهجوم، مما أدى إلى خسارة أصول تزيد عن 300,000 دولار. قامت فرق الأمان بإجراء تحليل عميق لهذا الحدث، والآن تشارك النتائج على النحو التالي:
المعرفة الخلفية
إصدار Solidity 0.8.24 قدم ميزة التخزين اللحظي (transient storage)، وهو موقع جديد لتخزين البيانات. تشمل الميزات الرئيسية ما يلي:
تكلفة الغاز المنخفضة: تكلفة الغاز لعمليات TSTORE و TLOAD ثابتة عند 100.
الاستمرارية داخل المعاملات: تبقى البيانات صالحة طوال مدة المعاملة.
إزالة تلقائية: بعد انتهاء الصفقة، يتم إعادة تعيين التخزين المؤقت إلى صفر.
سبب الهجوم
السبب الجذري لهذا الحدث هو أن القيم المستخدمة في التخزين المؤقت المؤقت باستخدام tstore لم يتم مسحها بعد انتهاء استدعاء الدالة. استغل المهاجم هذه الميزة، وقام بإنشاء عنوان ضار محدد لتجاوز فحص الأذونات، وبالتالي تحويل الرموز.
خطوات الهجوم
يقوم المهاجم بإنشاء رمزين خبيثين A و B، ويقوم بإنشاء تجمع لهذين الرمزين على DEX معين لضخ السيولة.
يقوم المهاجم باستدعاء دالة initialize لعقد Vault، ويستخدم رمز A كرمز ضمان ورمز B كنقود دين لإنشاء سوق تداول بالرافعة.
يقوم المهاجم باستدعاء دالة mint لعقد Vault، وإيداع رمز الدين B لصك رمز الرفع. خلال هذه العملية، يتم تخزين عنوان تجمع DEX بشكل مؤقت للمرة الأولى.
عندما يقوم حوض DEX بعمليات التبادل، سيتم استدعاء دالة uniswapV3SwapCallback لعقد Vault. تستخدم هذه الدالة tload لاسترداد القيم من التخزين المؤقت للتحقق من هوية المتصل، وتقوم بتخزين الكمية المصدرة في التخزين المؤقت مرة أخرى.
يقوم المهاجم بإنشاء عقد خبيث، يكون عنوانه هو نفس قيمة التخزين المؤقت الثاني.
يقوم المهاجم باستدعاء وظيفة uniswapV3SwapCallback لعقد Vault مباشرة من خلال العقد الخبيث لسحب الرموز. نظرًا لأن القيم في التخزين المؤقت لم يتم مسحها، مما أدى إلى تجاوز المصادقة بشكل خاطئ.
أخيراً، يقوم المهاجم من خلال هجوم على العقد (رمز A) باستدعاء دالة uniswapV3SwapCallback لعقد Vault، مما يؤدي إلى نقل رموز أخرى من عقد Vault (مثل WBTC، WETH) لتحقيق الربح.
تحليل تدفق الأموال
وفقًا لتحليل أدوات مكافحة غسل الأموال والتعقب داخل السلسلة، قام المهاجمون بسرقة أصول تقدر بحوالي 300,000 دولار، بما في ذلك:
17,814.8626 دولار أمريكي
1.4085 WBTC
119.871 WETH
بعد ذلك، قام المهاجم بتحويل WBTC و USDC إلى WETH، حيث تم تحويل ما مجموعه 193.1428 WETH إلى أداة خلط معينة. كانت مصادر الأموال الأولية للمهاجم هي 0.3 ETH التي تم تحويلها من تلك الأداة.
نصائح الأمان
يجب على فريق المشروع استخدام tstore(key على الفور بعد انتهاء استدعاء الدالة لتنظيف القيم في التخزين المؤقت الداخلي بناءً على المنطق التجاري.
تعزيز تدقيق كود العقد واختبار الأمان، لتجنب ثغرات مماثلة.
استخدم الخصائص الجديدة بحذر، وكن على دراية كاملة بالمخاطر المحتملة.
إنشاء آلية تحقق متعددة، ولا تعتمد فقط على طريقة تحقق واحدة.
إجراء تقييمات أمنية وفحص الثغرات بشكل دوري، وإصلاح المشكلات المكتشفة في الوقت المناسب.
تؤكد هذه الحادثة الهجومية مرة أخرى على ضرورة أن تكون مشاريع داخل السلسلة حذرة بشكل خاص عند استخدام ميزات التكنولوجيا الجديدة، كما تبرز أهمية التدقيق الأمني المستمر. يجب على المطورين أن يكونوا دائمًا على دراية بأحدث ممارسات الأمان وأن يتبعوا بدقة في تنفيذ الشيفرة.
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
ثغرة تخزين مؤقت تؤدي إلى هجوم بقيمة 300,000 دولار على مشروع إثيريوم، فريق الأمان يفسر التفاصيل الرئيسية
تحليل حادثة هجوم بقيمة 300,000 دولار داخل السلسلة الناجمة عن ثغرة التخزين اللحظي
في 30 مارس 2025، تعرض مشروع تداول الرافعة المالية على شبكة إيثيريوم لهجوم، مما أدى إلى خسارة أصول تزيد عن 300,000 دولار. قامت فرق الأمان بإجراء تحليل عميق لهذا الحدث، والآن تشارك النتائج على النحو التالي:
المعرفة الخلفية
إصدار Solidity 0.8.24 قدم ميزة التخزين اللحظي (transient storage)، وهو موقع جديد لتخزين البيانات. تشمل الميزات الرئيسية ما يلي:
سبب الهجوم
السبب الجذري لهذا الحدث هو أن القيم المستخدمة في التخزين المؤقت المؤقت باستخدام tstore لم يتم مسحها بعد انتهاء استدعاء الدالة. استغل المهاجم هذه الميزة، وقام بإنشاء عنوان ضار محدد لتجاوز فحص الأذونات، وبالتالي تحويل الرموز.
خطوات الهجوم
يقوم المهاجم بإنشاء رمزين خبيثين A و B، ويقوم بإنشاء تجمع لهذين الرمزين على DEX معين لضخ السيولة.
يقوم المهاجم باستدعاء دالة initialize لعقد Vault، ويستخدم رمز A كرمز ضمان ورمز B كنقود دين لإنشاء سوق تداول بالرافعة.
يقوم المهاجم باستدعاء دالة mint لعقد Vault، وإيداع رمز الدين B لصك رمز الرفع. خلال هذه العملية، يتم تخزين عنوان تجمع DEX بشكل مؤقت للمرة الأولى.
عندما يقوم حوض DEX بعمليات التبادل، سيتم استدعاء دالة uniswapV3SwapCallback لعقد Vault. تستخدم هذه الدالة tload لاسترداد القيم من التخزين المؤقت للتحقق من هوية المتصل، وتقوم بتخزين الكمية المصدرة في التخزين المؤقت مرة أخرى.
يقوم المهاجم بإنشاء عقد خبيث، يكون عنوانه هو نفس قيمة التخزين المؤقت الثاني.
يقوم المهاجم باستدعاء وظيفة uniswapV3SwapCallback لعقد Vault مباشرة من خلال العقد الخبيث لسحب الرموز. نظرًا لأن القيم في التخزين المؤقت لم يتم مسحها، مما أدى إلى تجاوز المصادقة بشكل خاطئ.
أخيراً، يقوم المهاجم من خلال هجوم على العقد (رمز A) باستدعاء دالة uniswapV3SwapCallback لعقد Vault، مما يؤدي إلى نقل رموز أخرى من عقد Vault (مثل WBTC، WETH) لتحقيق الربح.
تحليل تدفق الأموال
وفقًا لتحليل أدوات مكافحة غسل الأموال والتعقب داخل السلسلة، قام المهاجمون بسرقة أصول تقدر بحوالي 300,000 دولار، بما في ذلك:
بعد ذلك، قام المهاجم بتحويل WBTC و USDC إلى WETH، حيث تم تحويل ما مجموعه 193.1428 WETH إلى أداة خلط معينة. كانت مصادر الأموال الأولية للمهاجم هي 0.3 ETH التي تم تحويلها من تلك الأداة.
نصائح الأمان
يجب على فريق المشروع استخدام tstore(key على الفور بعد انتهاء استدعاء الدالة لتنظيف القيم في التخزين المؤقت الداخلي بناءً على المنطق التجاري.
تعزيز تدقيق كود العقد واختبار الأمان، لتجنب ثغرات مماثلة.
استخدم الخصائص الجديدة بحذر، وكن على دراية كاملة بالمخاطر المحتملة.
إنشاء آلية تحقق متعددة، ولا تعتمد فقط على طريقة تحقق واحدة.
إجراء تقييمات أمنية وفحص الثغرات بشكل دوري، وإصلاح المشكلات المكتشفة في الوقت المناسب.
تؤكد هذه الحادثة الهجومية مرة أخرى على ضرورة أن تكون مشاريع داخل السلسلة حذرة بشكل خاص عند استخدام ميزات التكنولوجيا الجديدة، كما تبرز أهمية التدقيق الأمني المستمر. يجب على المطورين أن يكونوا دائمًا على دراية بأحدث ممارسات الأمان وأن يتبعوا بدقة في تنفيذ الشيفرة.