المنشورات
avatar

فكّك إعادة الدخول - ثغرة العقد الذكي التي لا تزال تُفرغ ملايين الدولارات في عام 2026، ونمط التحقق-التأثيرات-التفاعلات الذي يوقفها في الكود إعادة الدخول ليست سحرًا. إنها عيب في الترتيب: عقدك يُحدّث حالته AFTER أن يُجري استدعاءً خارجيًا بدلًا من قبله، ويُعيد المهاجم الاتصال خلال هذه الفجوة. صحّح الترتيب وستختفي الثغرة. خسرت DAO حوالي 3.6 مليون ETH (حوالي 60 مليون دولار، حوالي 5% من جميع ETH الموجودة آنذاك) بسبب هذا الخطأ بالضبط في 17 يونيو 2016. أدّى التداعي إلى تقسيم إيثريوم إلى ETH وETC. بعد عشر سنوات، لا تزال تُفرغ الأموال. خسر بروتوكول Solv 2.73 مليون دولار بسبب إعادة دخول في 5 مارس 2026، وسرقت حوالي 52 مليون دولار عبر بروتوكولات على السلسلة في مايو 2026 (DeFiLlama عبر CryptoTimes، 31 مايو 2026). النمط المعرض للخطر: قراءة الرصيد، إرسال ETH باستخدام استدعاء منخفض المستوى، ثم ضبط الرصيد على الصفر. تعمل دالة receive() للمهاجم على إعادة الدخول إلى withdraw() قبل أن يصل الصفر أبدًا، وتكرر العملية حتى يصبح العقد فارغًا. حلّان، يُستخدمان معًا: التحقق-التأثيرات-التفاعلات. تحقق، حدّث جميع الحالات، ثم أجرِ الاستدعاء الخارجي في النهاية. انقل balances[msg.sender] = 0 فوق الاستدعاء، وسيقرأ استدعاء إعادة الدخول الصفر ويرفض. حاجز nonReentrant من OpenZeppelin. مفتاح تخزين (NOT_ENTERED إلى ENTERED) يرفض إعادة الدخول. استخدمه مع CEI، وليس أحدهما فقط. شيئان لا يزال معظم المطورين يخطئان فيهما. 1. .transfer() لم تعد درعًا: لم يعد مبلغ الغاز البالغ 2300 افتراضًا آمنًا بعد أن رفعت EIP-1884 تكلفة SLOAD في عام 2019. استخدم .call{value:}("") مع CEI. 2. إعادة الدخول القرائية تتجاوز الحماية القياسية، لأن دالة view التي تقرأ أثناء التحديث تعيد حالة تالفة ويمكنها تسميم مرجع السعر (dForce، 3.64 مليون دولار). لأغراض تعليمية فقط. ليس نصيحة مالية. تابع للحصول على رؤى يومية - حيث يلتقي البلوك تشين بالذكاء الاصطناعي، بحركة سحب واحدة مرضية في كل مرة. #Solidity #SmartContractSecurity #Web3Security #Ethereum #DeFi #SmartContracts #BlockchainDeveloper #SolidityDev #EVM #OpenZeppelin #Reentrancy #Web3Dev #BlockchainSecurity #DeFiSecurity #SmartContractAudit #CodeSecurity #OnChain #BlockchainEducation

هذا المحتوى لأغراض إعلامية وتعليمية فقط. قد يتضمن تحليلات من جهات خارجية، أو محتوى دعائي، أو مواد ترويجية قد يحصل منشئها على مقابل مادي. لا يُعد أي شيء في هذه النشرة نصيحة استثمارية أو ضمانًا للعوائد. أنت وحدك المسؤول عن قراراتك الاستثمارية. ابحث دائمًا بنفسك وتوخَّ الحذر قبل التداول. لا نضمن دقة معلومات الجهات الخارجية، ولا نتحمل مسؤولية أي خسائر قد تتكبدها. الأداء السابق لا يُشير إلى النتائج المستقبلية. يُرجى مراجعة شروط المنتدى وبيان الإفصاح عن المخاطر للاطلاع على التفاصيل.

avatarانشر ردك

التعليق