ثغرة التخزين المؤقت تؤدي إلى سرقة أصول بقيمة 300,000 دولار
في 30 مارس 2025، تعرض مشروع تداول الرافعة المالية على سلسلة الإيثيريوم لهجوم، مما أدى إلى خسارة أصول تزيد عن 300,000 دولار. قامت فرق الأمان بتحليل متعمق لهذا الحدث، والآن تشارك النتائج كما يلي:
الخلفية
أدخلت نسخة Solidity 0.8.24 ميزة التخزين المؤقت المستندة إلى EIP-1153. هذه وسيلة جديدة لتخزين البيانات تهدف إلى توفير طريقة تخزين مؤقتة منخفضة التكلفة وفعالة أثناء المعاملات للمطورين. يتم تنفيذ التخزين المؤقت من خلال تعليمات EVM الجديدة TSTORE و TLOAD، ويتميز بتكلفة غاز منخفضة، واستمرارية داخل المعاملة، والتنظيف التلقائي.
سبب الهجوم
السبب الجذري لهذا الحدث هو أن القيم المخزنة مؤقتًا باستخدام tstore في الدالة لم يتم مسحها بعد انتهاء استدعاء الدالة. استغل المهاجم هذه الميزة لإنشاء عناوين ضارة محددة لتجاوز فحص الأذونات وسحب الرموز.
خطوات الهجوم
يقوم المهاجم بإنشاء رمزين خبيثين A و B، ويقوم بإنشاء أحواض لهذين الرمزين على DEX معين وضخ السيولة.
يقوم المهاجم باستدعاء دالة initialize لعقد Vault، لإنشاء سوق تداول رافعة مالية باستخدام الرمز A كرمز ضمان والرمز B كرمز دين.
يقوم المهاجم باستدعاء دالة mint لعقد Vault، وإيداع رمز الدين B لصياغة رمز الرافعة المالية. خلال هذه العملية، يتم تخزين عنوان تجمع DEX وعدد الرموز المصنوعة بشكل مؤقت.
يقوم المهاجم بإنشاء عقد ضار، يكون عنوانه مطابقًا للقيمة المخزنة مؤقتًا في المرة الثانية.
يقوم المهاجم باستدعاء دالة الاسترجاع لعقد Vault من خلال عقد ضار لسحب الرموز. نظراً لأن القيم المخزنة مؤقتاً لم يتم مسحها، فإن ذلك يؤدي إلى تجاوز فحص الهوية بشكل خاطئ.
أخيراً، يقوم المهاجم باستدعاء دالة الاسترجاع لعقد Vault من خلال هجوم على العقد (رمز A)، مما يؤدي إلى تحويل رموز أخرى (مثل WBTC، WETH) لتحقيق الأرباح.
تحليل تدفق الأموال
قام المهاجم بسرقة أصول تقدر بحوالي 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) فور الانتهاء من استدعاء الدالة وفقًا للمنطق التجاري. في الوقت نفسه، يجب تعزيز تدقيق كود العقد واختبارات الأمان لمنع حدوث حالات مشابهة.
قد تحتوي هذه الصفحة على محتوى من جهات خارجية، يتم تقديمه لأغراض إعلامية فقط (وليس كإقرارات/ضمانات)، ولا ينبغي اعتباره موافقة على آرائه من قبل Gate، ولا بمثابة نصيحة مالية أو مهنية. انظر إلى إخلاء المسؤولية للحصول على التفاصيل.
تسجيلات الإعجاب 6
أعجبني
6
7
مشاركة
تعليق
0/400
VitaliksTwin
· منذ 6 س
هذه الموجة من الاستنتاج لا تزال تضيع الغاز
شاهد النسخة الأصليةرد0
CountdownToBroke
· منذ 6 س
30w جاء أخ آخر
شاهد النسخة الأصليةرد0
0xLuckbox
· منذ 6 س
مرة أخرى تم سرقة ثلاثمائة ألف ~ العقود الذكية تحافظ على الأمان ها
شاهد النسخة الأصليةرد0
OnchainGossiper
· منذ 6 س
مرة أخرى تم استغلال الثغرة، هل أنت غبي؟
شاهد النسخة الأصليةرد0
GateUser-0717ab66
· منذ 6 س
30w أيضا يجرؤ على ذكره
شاهد النسخة الأصليةرد0
VibesOverCharts
· منذ 6 س
30w؟ يعني فقط رسوم تداول ليوم واحد
شاهد النسخة الأصليةرد0
DefiPlaybook
· منذ 6 س
استنادًا إلى عينة البيانات، فإن هذا النوع من ثغرات التخزين يؤدي إلى معدل خسارة يصل إلى 86.3%، احذر!
ثغرة تخزين مؤقت تسبب خسارة قدرها 300,000 دولار لمشروع تداول الهامش الخاص بإيثيريوم
ثغرة التخزين المؤقت تؤدي إلى سرقة أصول بقيمة 300,000 دولار
في 30 مارس 2025، تعرض مشروع تداول الرافعة المالية على سلسلة الإيثيريوم لهجوم، مما أدى إلى خسارة أصول تزيد عن 300,000 دولار. قامت فرق الأمان بتحليل متعمق لهذا الحدث، والآن تشارك النتائج كما يلي:
الخلفية
أدخلت نسخة Solidity 0.8.24 ميزة التخزين المؤقت المستندة إلى EIP-1153. هذه وسيلة جديدة لتخزين البيانات تهدف إلى توفير طريقة تخزين مؤقتة منخفضة التكلفة وفعالة أثناء المعاملات للمطورين. يتم تنفيذ التخزين المؤقت من خلال تعليمات EVM الجديدة TSTORE و TLOAD، ويتميز بتكلفة غاز منخفضة، واستمرارية داخل المعاملة، والتنظيف التلقائي.
سبب الهجوم
السبب الجذري لهذا الحدث هو أن القيم المخزنة مؤقتًا باستخدام tstore في الدالة لم يتم مسحها بعد انتهاء استدعاء الدالة. استغل المهاجم هذه الميزة لإنشاء عناوين ضارة محددة لتجاوز فحص الأذونات وسحب الرموز.
خطوات الهجوم
يقوم المهاجم بإنشاء رمزين خبيثين A و B، ويقوم بإنشاء أحواض لهذين الرمزين على DEX معين وضخ السيولة.
يقوم المهاجم باستدعاء دالة initialize لعقد Vault، لإنشاء سوق تداول رافعة مالية باستخدام الرمز A كرمز ضمان والرمز B كرمز دين.
يقوم المهاجم باستدعاء دالة mint لعقد Vault، وإيداع رمز الدين B لصياغة رمز الرافعة المالية. خلال هذه العملية، يتم تخزين عنوان تجمع DEX وعدد الرموز المصنوعة بشكل مؤقت.
يقوم المهاجم بإنشاء عقد ضار، يكون عنوانه مطابقًا للقيمة المخزنة مؤقتًا في المرة الثانية.
يقوم المهاجم باستدعاء دالة الاسترجاع لعقد Vault من خلال عقد ضار لسحب الرموز. نظراً لأن القيم المخزنة مؤقتاً لم يتم مسحها، فإن ذلك يؤدي إلى تجاوز فحص الهوية بشكل خاطئ.
أخيراً، يقوم المهاجم باستدعاء دالة الاسترجاع لعقد Vault من خلال هجوم على العقد (رمز A)، مما يؤدي إلى تحويل رموز أخرى (مثل WBTC، WETH) لتحقيق الأرباح.
تحليل تدفق الأموال
قام المهاجم بسرقة أصول تقدر بحوالي 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) فور الانتهاء من استدعاء الدالة وفقًا للمنطق التجاري. في الوقت نفسه، يجب تعزيز تدقيق كود العقد واختبارات الأمان لمنع حدوث حالات مشابهة.