
CVE-2012-2122 - تجاوز مصادقة MySQL
إثبات مفهوم (PoC) لـ CVE-2012-2122، وهي ثغرة حرجة في تجاوز المصادقة تؤثر على خوادم MySQL وMariaDB المعرضة للخطر.
إخلاء مسؤولية
هذا المشروع مخصص للأغراض التعليمية والبحث الأمني واختبار الاختراق المصرح به فقط. لا تستخدم هذا البرنامج ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها.
CVE-2012-2122 هي ثغرة تجاوز مصادقة تم اكتشافها في منطق التحقق من كلمة المرور في MySQL.
بسبب خلل في تحويل/مقارنة الأعداد الصحيحة، يمكن أن تنجح المصادقة بشكل غير صحيح عندما يُقيَّم مقارنة كلمة مرور غير صحيحة على أنها متساوية في ظروف معينة.
بدلاً من الحاجة إلى معرفة كلمة مرور صالحة، يمكن للمهاجم محاولة المصادقة بشكل متكرر باستخدام كلمات مرور عشوائية حتى يتم تفعيل خلل المقارنة.
احتمال النجاح تقريباً:
بسبب هذا الاحتمال المرتفع نسبياً، يمكن للأدوات الآلية عادةً تجاوز المصادقة خلال بضع مئات من محاولات تسجيل الدخول.
| المقياس | القيمة |
|---|---|
| CVE | CVE-2012-2122 |
| CVSS v2 | 7.5 (عالية) |
| ناقل الهجوم | الشبكة |
| المصادقة | لا شيء |
| تفاعل المستخدم | لا شيء |
| الأثر | تجاوز المصادقة |
تؤثر الثغرة على إصدارات MySQL المترجمة بتحسينات مترجم معرضة للخطر، بما في ذلك إصدارات مثل:
أثرت المشكلة بشكل أساسي على توزيعات لينكس التي كشف سلوك مترجمها عن الخلل.
ليست كل تثبيتات هذه الإصدارات معرضة للخطر.
أثناء التحقق من كلمة المرور، تقارن MySQL داخلياً قيمتي تجزئة باستخدام دالة memcmp().
في الظروف العادية:
memcmp(hash1, hash2)
تعيد:
0 عند التساوينشأت الثغرة لأن القيمة المُعادة كانت تُخزَّن في عدد صحيح بإشارة ثم تُحوَّل بطريقة سمحت لقيم معينة غير صفرية بأن تُفسَّر على أنها نجاح مصادقة.
المنطق المبسّط:
if (memcmp(hash1, hash2) == 0)
{
// Login successful
}
في ظل سلوك مترجم معرض للخطر، يمكن لقيم إرجاع محددة من memcmp() أن تحقق شرط المقارنة بشكل غير صحيح.
نتيجة لذلك، كانت كلمات المرور غير الصحيحة تنجح أحياناً في المصادقة.
لا يحتاج المهاجم سوى:
لا يلزم معرفة كلمة المرور.
يقدّم المهاجم محاولات تسجيل دخول متواصلة باستخدام كلمات مرور عشوائية.
في النهاية، تنجح إحدى عمليات المصادقة بسبب خلل المقارنة.
تدفق الهجوم النموذجي:
Attempt #1
↓
Authentication Failed
Attempt #57
↓
Authentication Failed
Attempt #141
↓
Authentication Failed
Attempt #237
↓
Authentication Successful
يحدث النجاح في المتوسط مرة واحدة تقريباً كل 256 محاولة.
الاستغلال الناجح يسمح للمهاجم بـ:
إذا تم استهداف بيانات اعتماد إدارية، فقد يتم الحصول على سيطرة كاملة على خادم قاعدة البيانات.
تتضمن المؤشرات:
راجع سجلات مصادقة MySQL بحثاً عن نشاط تسجيل دخول فاشل مفرط.
الإجراء الموصى به للتخفيف هو الترقية إلى إصدار مصحح.
تشمل التدابير الدفاعية الإضافية:
---
## Example Usage
```bash
python3 exploit.py -ip <target>
مثال:
python3 exploit.py -ip 192.168.1.100
يُظهر هذا المستودع كيف يمكن لخلل تنفيذي دقيق في منطق المصادقة أن يُقوّض التحقق من كلمة المرور بشكل كامل.
على الرغم من أن الثغرة تجاوزت عقداً من الزمن، إلا أنها لا تزال دراسة حالة مهمة في: