
CVE-2018-10933 - libssh تجاوز المصادقة
تطبيق إثبات المفهوم لثغرة CVE-2018-10933، وهي ثغرة حرجة لتجاوز المصادقة تؤثر على تنفيذ جانب الخادم في libssh.
إخلاء مسؤولية
هذا المستودع مُقدَّم لأغراض تعليمية، وللبحث في الثغرات الأمنية، وللاختبارات الأمنية المصرح بها فقط. لا تختبر أي أنظمة دون إذن صريح.
CVE-2018-10933 هي ثغرة حرجة لتجاوز المصادقة اكتُشفت في آلة الحالة على جانب الخادم في libssh.
على عكس عيوب المصادقة التقليدية التي تنطوي على كلمات مرور ضعيفة أو نقاط ضعف تشفيرية، توجد هذه الثغرة لأن الخادم يثق بشكل غير صحيح في رسالة بروتوكول يُفترض أن تُرسَل من الخادم إلى العميل فقط.
لذلك يمكن للمهاجم إقناع خادم libssh الثغري بأن المصادقة قد اكتملت بنجاح دون تقديم أي بيانات اعتماد.
وهذا يسمح لمهاجم غير مصادَق بإنشاء جلسة SSH مصادَق عليها ضد التطبيقات الثغرية التي تستخدم libssh في وضع الخادم.
| الحقل | القيمة |
|---|---|
| CVE | CVE-2018-10933 |
| درجة الخطورة | حرجة |
| CVSS v3 | 9.1 |
| CWE | CWE-287 (مصادقة غير سليمة) |
| متجه الهجوم | الشبكة |
| تفاعل المستخدم | لا شيء |
| الصلاحيات المطلوبة | لا شيء |
تؤثر الثغرة على libssh الذي يعمل في وضع الخادم.
تشمل الإصدارات المتأثرة:
التطبيقات التي تستخدم libssh كعميل SSH فقط ليست عرضة للثغرة.
تنبع الثغرة من آلة حالة المصادقة المطبَّقة داخل كود الخادم في libssh.
أثناء تدفق مصادقة SSH عادي:
Client ----------------------> Server
SSH_MSG_USERAUTH_REQUEST
|
V
Server validates credentials
|
V
SSH_MSG_USERAUTH_SUCCESS
|
V
Authenticated Session
تنص مواصفات البروتوكول على أن رسالة SSH_MSG_USERAUTH_SUCCESS تُنشأ بواسطة الخادم فقط بعد مصادقة ناجحة.
ومع ذلك، تفشل الإصدارات الثغرية من libssh في التحقق السليم من مصدر هذه الرسالة.
بدلاً من رفض SSH_MSG_USERAUTH_SUCCESS القادمة من العميل، ينتقل الخادم بشكل غير صحيح بحالة المصادقة الداخلية مباشرة إلى:
Authenticated = TRUE
دون أي تحقق من بيانات الاعتماد.
هذا مثال كلاسيكي على المصادقة غير السليمة (CWE-287).
Client
|
| USERAUTH_REQUEST
|
V
Server
Validate Username
Validate Password
Validate Keys
|
V
USERAUTH_SUCCESS
Authenticated
Attacker
|
| USERAUTH_SUCCESS
|
V
Vulnerable Server
(No validation)
Authenticated
يسمح الاستغلال الناجح لمهاجم غير مصادَق بـ:
يعتمد الأثر الفعلي على كيفية استخدام التطبيق الثغري لـ libssh بعد المصادقة.
توجد الثغرة لأن آلة حالة المصادقة تقبل بشكل غير صحيح الحزمة:
SSH2_MSG_USERAUTH_SUCCESS
القادمة من العميل.
بدلاً من التحقق من أن الحزمة صادرة من الخادم، تحدّث libssh حالة الجلسة الداخلية كما لو كانت المصادقة قد اكتملت بنجاح.
ولأن فحوصات التفويض اللاحقة تعتمد على هذه الحالة الداخلية، يمكن للمهاجمين فتح قنوات مصادَق عليها فورًا.
لا تستغل هذه الثغرة:
بل تستغل خللًا منطقيًا في معالجة حالة البروتوكول.
يحتاج المهاجم إلى:
لا يُطلَب أيٌّ من:
تشمل المؤشرات المحتملة:
قد تكتشف توقيعات أنظمة كشف التسلل الشبكية أيضًا حزم SSH2_MSG_USERAUTH_SUCCESS الشاذة المُرسَلة من العملاء.
قم بترقية libssh إلى أحد الإصدارات المُصحَّحة:
إذا لم تكن الترقية ممكنة فورًا:
لا يوجد حل بديل موثوق بخلاف تحديث البرنامج المتأثر.
يوضح هذا المستودع كيف يمكن أن تنشأ ثغرات آلة حالة المصادقة من أخطاء تنفيذ البروتوكول.
وهو مُوجَّه لمساعدة:
يوضح إثبات المفهوم المرفق الثغرة في بيئات خاضعة للتحكم لتحسين فهم التنفيذ الآمن للبروتوكولات.