عيب التخزين المؤقت يؤدي إلى هجوم بقيمة 300,000 دولار على مشروع Ethereum
في 30 مارس 2025، رصد نظام مراقبة أمان مشروع تداول بالرافعة المالية على سلسلة Ethereum يتعرض لهجوم، مما أدى إلى خسائر تتجاوز 300,000 دولار من الأصول. قام فريق الأمان بتحليل هذه الحادثة، والآن يشارك النتائج كما يلي:
المعرفة الخلفية
تم تقديم ميزة التخزين المؤقت transient storage في إصدار Solidity 0.8.24، وهو موقع تخزين بيانات جديد. السمة الأساسية هي أن البيانات صالحة فقط خلال فترة تنفيذ المعاملة الحالية، ويتم مسحها تلقائيًا بعد انتهاء المعاملة. يتم الوصول إلى البيانات وتعديلها من خلال تعليمتي EVM الجديدتين TSTORE و TLOAD.
تتميز التخزين المؤقت بالميزات التالية:
تكلفة الغاز المنخفضة: تكلفة الغاز لـ TSTORE و TLOAD ثابتة عند 100
ديمومة المعاملات: تبقى البيانات صالحة طوال فترة المعاملة
الإزالة التلقائية: إعادة تعيين تلقائي إلى صفر بعد انتهاء المعاملة
سبب الثغرة
السبب الجذري لهذا الحدث هو أن القيم التي تم استخدامها في التخزين المؤقت المؤقت باستخدام tstore لم يتم مسحها بعد انتهاء استدعاء الدالة. وهذا يمكّن المهاجمين من استخدام هذه الميزة لإنشاء عناوين ضارة محددة، وتجاوز فحص الأذونات لسحب الرموز.
عملية الهجوم
يقوم المهاجم بإنشاء رمزين خبيثين A و B، ويقوم بإنشاء تجمع لهذين الرمزين على DEX معين لضخ السيولة، حيث يكون الرمز A هو عقد الهجوم.
المهاجم يستدعي دالة initialize لعقد Vault، باستخدام توكن A كتوكن ضمان، وتوكن B كتوكن دين لإنشاء سوق تداول بالرافعة المالية APE-21.
يقوم المهاجم باستدعاء دالة mint لعقد Vault، ويقوم بإيداع رموز الدين B لصك رموز الرافعة APE. خلال هذه العملية، يتم تخزين عنوان تجمع DEX وكمية الصك بشكل مؤقت.
يقوم المهاجم بإنشاء عقد خبيث يكون عنوانه مطابقًا لقيمة التخزين المؤقت الثانية.
المهاجمون يستدعون مباشرةً دالة الاستدعاء لعقد Vault من خلال العقد الخبيث لسحب الرموز. نظرًا لعدم مسح القيم في التخزين المؤقت، فإن ذلك يؤدي إلى تجاوز فحص الهوية بشكل خاطئ.
أخيراً، يقوم المهاجم باستغلال عقد الهجوم (رمز A) لاستدعاء دالة الاسترجاع لعقد Vault، مما يؤدي إلى تحويل الرموز الأخرى (WBTC، WETH) الموجودة في عقد Vault لتحقيق الربح.
تحليل تدفق الأموال
وفقًا للتحليل على السلسلة، قام المهاجمون بسرقة أصول بقيمة حوالي 300,000 دولار، بما في ذلك 17,814.8626 USDC و1.4085 WBTC و119.871 WETH.
تم تبادل WBTC إلى 63.5596 WETH
تم تحويل USDC إلى 9.7122 WETH
تم تحويل 193.1428 WETH إلى خدمة خلط معينة
مصدر الأموال الأولية للمهاجم جاء من تحويل 0.3 ETH من خدمة خلط العملات.
الملخص والتوصيات
تتمحور هذه الهجمة حول استغلال خاصية التخزين العابر التي تحتفظ بالقيم طوال فترة المعاملة، متجاوزةً التحقق من صلاحيات دالة الاستدعاء. يُنصح الجهات المعنية بالمشروع باستخدام tstore(key، 0) لمسح القيم من التخزين العابر فور انتهاء استدعاء الدوال وفقًا للمنطق التجاري. بالإضافة إلى ذلك، يجب تعزيز تدقيق كود العقد واختبارات الأمان لتجنب حدوث حالات مماثلة.
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.
تسجيلات الإعجاب 15
أعجبني
15
3
مشاركة
تعليق
0/400
CommunitySlacker
· منذ 15 س
مشروع آخر تحول إلى ماكينة سحب
شاهد النسخة الأصليةرد0
BlockchainDecoder
· منذ 15 س
من الناحية الفنية، هذا هو الاستخدام الخاطئ النموذجي للتخزين المؤقت.
تعرض مشروع إيثيريوم لهجوم بقيمة 300000 دولار، وكان خلل التخزين المؤقت السبب الرئيسي.
عيب التخزين المؤقت يؤدي إلى هجوم بقيمة 300,000 دولار على مشروع Ethereum
في 30 مارس 2025، رصد نظام مراقبة أمان مشروع تداول بالرافعة المالية على سلسلة Ethereum يتعرض لهجوم، مما أدى إلى خسائر تتجاوز 300,000 دولار من الأصول. قام فريق الأمان بتحليل هذه الحادثة، والآن يشارك النتائج كما يلي:
المعرفة الخلفية
تم تقديم ميزة التخزين المؤقت transient storage في إصدار Solidity 0.8.24، وهو موقع تخزين بيانات جديد. السمة الأساسية هي أن البيانات صالحة فقط خلال فترة تنفيذ المعاملة الحالية، ويتم مسحها تلقائيًا بعد انتهاء المعاملة. يتم الوصول إلى البيانات وتعديلها من خلال تعليمتي EVM الجديدتين TSTORE و TLOAD.
تتميز التخزين المؤقت بالميزات التالية:
سبب الثغرة
السبب الجذري لهذا الحدث هو أن القيم التي تم استخدامها في التخزين المؤقت المؤقت باستخدام tstore لم يتم مسحها بعد انتهاء استدعاء الدالة. وهذا يمكّن المهاجمين من استخدام هذه الميزة لإنشاء عناوين ضارة محددة، وتجاوز فحص الأذونات لسحب الرموز.
عملية الهجوم
يقوم المهاجم بإنشاء رمزين خبيثين A و B، ويقوم بإنشاء تجمع لهذين الرمزين على DEX معين لضخ السيولة، حيث يكون الرمز A هو عقد الهجوم.
المهاجم يستدعي دالة initialize لعقد Vault، باستخدام توكن A كتوكن ضمان، وتوكن B كتوكن دين لإنشاء سوق تداول بالرافعة المالية APE-21.
يقوم المهاجم باستدعاء دالة mint لعقد Vault، ويقوم بإيداع رموز الدين B لصك رموز الرافعة APE. خلال هذه العملية، يتم تخزين عنوان تجمع DEX وكمية الصك بشكل مؤقت.
يقوم المهاجم بإنشاء عقد خبيث يكون عنوانه مطابقًا لقيمة التخزين المؤقت الثانية.
المهاجمون يستدعون مباشرةً دالة الاستدعاء لعقد Vault من خلال العقد الخبيث لسحب الرموز. نظرًا لعدم مسح القيم في التخزين المؤقت، فإن ذلك يؤدي إلى تجاوز فحص الهوية بشكل خاطئ.
أخيراً، يقوم المهاجم باستغلال عقد الهجوم (رمز A) لاستدعاء دالة الاسترجاع لعقد Vault، مما يؤدي إلى تحويل الرموز الأخرى (WBTC، WETH) الموجودة في عقد Vault لتحقيق الربح.
تحليل تدفق الأموال
وفقًا للتحليل على السلسلة، قام المهاجمون بسرقة أصول بقيمة حوالي 300,000 دولار، بما في ذلك 17,814.8626 USDC و1.4085 WBTC و119.871 WETH.
مصدر الأموال الأولية للمهاجم جاء من تحويل 0.3 ETH من خدمة خلط العملات.
الملخص والتوصيات
تتمحور هذه الهجمة حول استغلال خاصية التخزين العابر التي تحتفظ بالقيم طوال فترة المعاملة، متجاوزةً التحقق من صلاحيات دالة الاستدعاء. يُنصح الجهات المعنية بالمشروع باستخدام tstore(key، 0) لمسح القيم من التخزين العابر فور انتهاء استدعاء الدوال وفقًا للمنطق التجاري. بالإضافة إلى ذلك، يجب تعزيز تدقيق كود العقد واختبارات الأمان لتجنب حدوث حالات مماثلة.