لأغراض تعليمية فقط؛ لا تشكل هذه المادة نصيحة استثمارية. قد يؤدي الاستثمار إلى خسارة.
الإجابة المباشرة
يستهدف هجوم تضخم الإيداع الأول خزينة ERC-4626 فارغة أو شبه فارغة. يودع المهاجم كمية ضئيلة ليحصل على الأسهم الأولى، ثم يحوّل الأصول الأساسية مباشرة إلى الخزينة. يزيد هذا التبرع totalAssets() من دون زيادة totalSupply()، فيرفع قيمة كل سهم قائم.
إذا حُوّل إيداع الضحية وفق سعر الصرف المتلاعب به، فقد تؤدي القسمة الصحيحة إلى تقريب الناتج إلى عدد قليل جداً من الأسهم أو إلى الصفر. تبقى أصول الضحية في الخزينة، بينما يستطيع المهاجم، بصفته مالك الأسهم القائمة، استرداد المطالبة المتضخمة. هذه مشكلة تلاعب بسعر الصرف وانزلاق سعري، وليست عيباً في واجهة ERC-4626 نفسها.
آلية العمل
في خزينة بسيطة بلا رسوم أو إزاحات وقائية، تساوي الأسهم المسكوكة مقابل الإيداع تقريباً assets * totalSupply / totalAssets. يفرض ERC-4626 أن تُحسب الأسهم لمبلغ أصول محدد بالتقريب إلى الأسفل بما يصب في مصلحة الخزينة. يكون فقدان التقريب ضئيلاً عند أسعار الصرف العادية، لكن الإيداع الذي تقل قيمته عن سهم واحد قد يخسر 100% بسبب التقريب عندما يُرفع سعر السهم.
يعتمد نجاح الهجوم على تفاصيل التطبيق. قد يؤدي تحويل ERC-20 مباشر إلى زيادة الأصول المحتسبة للخزينة من دون سك أسهم، خصوصاً عندما تقرأ totalAssets() رصيد رموز الخزينة. ويجب على المهاجم أيضاً أن يسبق الضحية عندما يكون المعروض من الأسهم منخفضاً جداً. وقد لا تكون الخزائن التي تستخدم محاسبة مختلفة أو دفاعات صريحة عرضة للخطر بالطريقة نفسها.
مثال
لنفترض أن خزينة فارغة معرضة للخطر تبدأ بسعر 1:1. يودع المهاجم 1 وحدة أصل ويحصل على 1 سهم، ثم يتبرع مباشرة بـ 999 وحدة. تصبح في الخزينة 1,000 وحدة من الأصول تدعم 1 سهماً. يودع الضحية 999 وحدة، فتكون العملية الساذجة 999 * 1 / 1,000 = 0 سهماً بعد التقريب الصحيح.
بعد ذلك تحتفظ الخزينة بـ 1,999 وحدة من الأصول ولا يوجد سوى 1 سهم للمهاجم. إذا سمح الإيداع بنتيجة صفر سهم ولم توجد رسوم أو قيود أخرى، يستطيع المهاجم استرداد السهم مقابل جميع الوحدات البالغ عددها 1,999: 1 وحدة الإيداع الأصلية، والتبرع البالغ 999 وحدة، وإيداع الضحية البالغ 999 وحدة. ويكون ربح المهاجم الإجمالي هو 999 وحدة الضحية قبل تكاليف المعاملة.
المخاطر ووسائل الدفاع
يمكن للمطبقين تقليل الخطر بتوفير سيولة أولية ذات معنى، أو حرق الأسهم الأولية أو قفلها، أو فرض حد أدنى موجب للناتج من الأسهم، أو استخدام تصميم لسعر الصرف يتضمن أصولاً وأسهمًا افتراضية. يضيف تطبيق OpenZeppelin كميات افتراضية ويدعم دقة إضافية للأسهم عبر إزاحة المنازل العشرية؛ وضمن النموذج الموثق، تستحوذ الأسهم الافتراضية على جزء من التبرع، ما يجعل التلاعب غير مربح أو أكثر كلفة بكثير. لكل وسيلة دفاع افتراضاتها، لذا ينبغي اختبارها ضد التحويلات المباشرة، وحدود التقريب، والرسوم، والخسائر، وسلوك الرموز غير المعتاد.
ينبغي للمستخدمين وعمليات الدمج التعامل مع previewDeposit() على أنه عرض سعري لا حد أدنى مضمون. أرسل الإيداعات عبر دالة أو موجّه يفرض الحد الأدنى المقبول من الأسهم ويرجع المعاملة إذا لم يتحقق الحد. قبل الإيداع في خزينة جديدة أو قليلة الأسهم، افحص totalAssets() وtotalSupply() وصيغة التحويل في التطبيق وما إذا كانت تحويلات الرموز غير المطلوبة تؤثر في المحاسبة. لا تحميك إشارة واجهة أمامية مواتية من معاملة يمكن إعادة ترتيب تنفيذها.
مفاهيم خاطئة شائعة
-
الخرافة 1: يضمن ERC-4626 نفسه سعر صرف آمناً. يحدد المعيار واجهة مشتركة وسلوك التقريب، لكنه لا يجعل كل تطبيق محصناً من التلاعب بسعر الصرف.
-
الخرافة 2: يضمن استدعاء
previewDeposit()مباشرة قبلdeposit()الحصول على ذلك الناتج. قد تتغير حالة السلسلة بين الاستدعاءين أو قبل التنفيذ. يحتاج مسار الإيداع إلى حد أدنى للأسهم يمكن فرضه. -
الخرافة 3: رفض الإيداعات ذات الأسهم الصفرية فقط يلغي الهجوم. يمنع ذلك النتيجة الأشد، لكن المهاجم قد يظل قادراً على جعل الإيداع يحصل على عدد قليل من الأسهم ويتكبد خسارة تقريب كبيرة. ينبغي للدفاعات تحديد الانزلاق المقبول، لا مجرد اشتراط نتيجة غير صفرية.
مواضيع ذات صلة
- معيار خزينة ERC-4626
- إثبات الاحتيال
- الاستيلاء على مهيئ العقد القابل للترقية
- العقد الذكي
- محاكاة المعاملة
المصادر
- ERC-4626: خزائن موحّدة بالرموز - Ethereum Improvement Proposals (تاريخ الاطلاع: 2026-08-20)
- معيار الخزائن الموحّدة بالرموز ERC-4626 - OpenZeppelin (تاريخ الاطلاع: 2026-08-20)
- تطبيق OpenZeppelin ERC4626 - OpenZeppelin (تاريخ الاطلاع: 2026-08-20)