التعريف
ثغرة الموافقة (Approval Exploit) هي نوع من المخاطر الأمنية حيث يستغل المهاجم آليات الموافقة أو السماح للرموز (tokens) لنقل أصول الضحية من دون الحصول على موافقة إضافية. تظهر هذه الثغرة عادة عندما يدفع عقد ذكي أو واجهة استخدام المستخدم إلى منح صلاحيات سماح مبالغ فيها أو غير آمنة، ثم يستدعي المهاجم هذه الصلاحيات عبر عقود خبيثة أو مخترَقة. في العادة لا تقوم هذه الثغرة بكسر معيار الرمز نفسه، بل تستغل نموذج التفويض المشروع المضمَّن في منطق الموافقة الخاص بالرمز. ونتيجة لذلك، تكون عملية تحويل الأموال صحيحة تقنياً على السلسلة (on-chain)، حتى لو كانت تخالف توقّعات المستخدم من حيث الأمان ونطاق الاستخدام.
يرتبط هذا الخطر بشكل وثيق بطريقة تخزين حالات السماح (allowance) للرموز وكيفية رجوع العقود الذكية إليها. بمجرد أن يحصل المهاجم على صلاحية سماح عالية أو غير محدودة، يمكنه استدعاء دوال التحويل مراراً وتكراراً نيابة عن عنوان المستخدم إلى أن تُستنزف الرصيد الموافق عليه بالكامل. غالباً ما تعتمد ثغرات الموافقة على نوافذ تأكيد معاملات خادعة، أو أسماء عقود مضلِّلة، أو إعادة استخدام صلاحيات سبق منحها بطرق غير متوقَّعة. السمة الجوهرية هنا هي عدم التوافق بين ما يعتقد المستخدم أنه فوَّض به فعلياً، وبين ما تسمح به صلاحيات السماح في الواقع العملي.
السياق والاستخدام
في نقاشات الأمان، يُشار إلى ثغرة الموافقة (Approval Exploit) على أنها خطر ناتج عن إساءة استخدام الصلاحيات، وليس فشلاً مباشراً في البروتوكول نفسه. غالباً ما ترتبط هذه الثغرة بتصميمات الرموز على نمط ERC-20، حيث تُحدَّد خطوة موافقة منفصلة تمنح سماحاً يمكن للعقود الأخرى إنفاقه. عندما تكون هذه الصلاحيات مُعدَّة بشكل خاطئ، أو لا يتم إلغاؤها، أو تُمنح لعقود غير موثوقة، فإنها تخلق سطح هجوم دائم يمكن للخصوم تفعيله لاحقاً. لذلك تقع هذه الثغرة عند تقاطع تصميم العقود الذكية، وتجربة استخدام الـ wallet، وفهم المستخدم لدلالات التفويض على السلسلة (on-chain authorization semantics).
يُستخدم هذا المصطلح غالباً جنباً إلى جنب مع مفهوم السماح (allowance) لوصف مدى دقة أو قابلية إلغاء صلاحيات الرموز. يتعامل المدققون الأمنيون ومصممو البروتوكولات مع ثغرات الموافقة كفئة مستقلة من التهديدات يجب أخذها في الحسبان عند تصميم واجهات العقود وتدفّقات الصلاحيات. في تقارير الحوادث، يعني تصنيف هجوم ما على أنه ثغرة موافقة أن المهاجم عمل ضمن صلاحيات مُنحت له رسمياً، حتى لو تم الحصول على هذه الصلاحيات أو تنظيمها بطريقة خادعة أو غير آمنة. يساعد هذا التصنيف في تمييزها عن الأخطاء الناتجة عن مشكلات حسابية، أو هجمات إعادة الدخول (reentrancy)، أو غيرها من العيوب منخفضة المستوى في العقود.