ثغرة OpenSSH تسمح بالدخول لحسابات Linux المقفلة بكلمة السر
اكتشاف ثغرة خطيرة في OpenSSH، تُعرف باسم "*sshole"، تسمح للمهاجمين بالدخول إلى حسابات Linux معطلة بكلمة سر، خاصة في أنظمة مثل Alpine Linux.
ما هي ثغرة OpenSSH الجديدة؟
اكتشفت ثغرة أمنية جديدة في OpenSSH، بالتعاون مع مكتبة musl C، أُطلق عليها اسم "*sshole". هذه الثغرة الخطيرة تسمح للمهاجمين بالدخول إلى حسابات Linux معينة، حتى تلك التي فُرض عليها منع تسجيل الدخول بكلمة سر. كيف يحدث هذا؟ ببساطة عن طريق إدخال كلمة سر طويلة جداً.
تؤثر هذه الثغرة فقط على خوادم OpenSSH التي تعمل على توزيعات Linux التي تستخدم مكتبة musl C، ومنها Alpine Linux و OpenWrt و Buildroot و Yocto، وذلك تحت إعدادات مصادقة معينة. كشف الباحث الأمني أوزغون كولتيكين، الذي اكتشف الثغرة ونشر تفاصيلها اليوم، أن هذه المشكلة موجودة منذ عام 2016 وتعود إلى طريقة تعامل OpenSSH مع أخطاء التحقق من كلمة السر على الأنظمة التي تستخدم مكتبة musl C. تم إصلاح هذه الثغرة في الإصدار 10.6p2 من OpenSSH.
كيف حدث هذا الخطأ بالضبط؟
عادةً، يمكن تهيئة حسابات Linux لمنع تسجيل الدخول بكلمة سر عن طريق استبدال رمز تجزئة كلمة السر الخاصة بها بعلامة النجمة (*) في ملف /etc/shadow. بما أن هذه العلامة ليست رمز تجزئة صالحاً لكلمة سر، فلا ينبغي لأي كلمة سر أن تسمح بالوصول إلى تلك الحسابات. هذا هو المفهوم الأساسي.
لكن في عام 2016، أُدخل تحديث في OpenSSH لإصلاح ثغرة تعداد أسماء المستخدمين (CVE-2016-6210). هذا التحديث غيّر طريقة تعامل OpenSSH مع الحسابات التي لا تحتوي على رموز تجزئة صالحة لكلمات السر. ولتجنب تمكين المهاجمين من تحديد أسماء المستخدمين الصالحة من خلال أوقات الاستجابة المختلفة، عُدل OpenSSH ليقوم بعملية تجزئة كلمة السر حتى لو لم يكن للحساب رمز تجزئة صالح، بما في ذلك الحسابات المهيأة بعلامة النجمة (*) لمنع تسجيل الدخول.
المشكلة تكمن في أن دالة crypt() في مكتبة musl C تُرجع أيضاً علامة النجمة (*) عندما تفشل عملية تجزئة كلمة السر، وهذا يشمل الحالات التي تتجاوز فيها كلمة السر المقدمة حدها البالغ 256 بايت. هذا يعني أن المهاجم يمكنه إرسال كلمة سر طويلة جداً، مما يجعل OpenSSH يقارن علامة النجمة (*) التي أُرجعت من الدالة بعلامة النجمة (*) المخزنة للحساب، وينتج عن ذلك تسجيل دخول ناجح. للتوضيح، هذه الثغرة لا تسمح للمهاجمين بتجاوز كلمات السر للحسابات التي تحتوي على رموز تجزئة صالحة. اكتشف كولتيكين هذه الثغرة باستخدام وكلاء ذكاء اصطناعي أجروا حوالي 17,600 اختبار مصادقة بإعدادات مختلفة.
لماذا يهمك هذا الأمر وماذا تفعل؟
تتطلب استغلال هذه الثغرة توافر ظروف معينة: أن يكون خادم OpenSSH يعمل على توزيعة Linux تستخدم مكتبة musl C، وأن يكون الحساب مُعداً لمنع تسجيل الدخول بكلمة سر (بوضع علامة النجمة (*) في ملف /etc/shadow). حذر الباحث من أن صور السحابة الرسمية لـ Alpine Linux على AWS و Azure تحتوي على حساب 'alpine' افتراضي متأثر بهذه الثغرة، ولديه صلاحيات 'doas' بدون كلمة سر، مما قد يسمح للمهاجمين بالحصول على وصول جذري (root access).
الخبر الجيد هو أن الأنظمة التي تستخدم glibc، مثل Debian و Ubuntu و Fedora، وتلك التي تستخدم مصادقة PAM، ليست عرضة لهذا الهجوم. إذا كنت تستخدم الأنظمة المتأثرة، ننصحك بشدة بتحديث OpenSSH إلى الإصدار 10.6p2. يمكن لمديري Alpine Linux تحديث حزم OpenSSH باستخدام الأمر: apk upgrade openssh.
إذا لم تتمكن من تثبيت التحديث فوراً، يمكنك تخفيف المشكلة عن طريق إيقاف مصادقة كلمة السر في SSH. قم بتعيين PasswordAuthentication no في ملف إعدادات خادم SSH الخاص بك، ثم أعد تشغيل SSH. هل تتساءل إذا كان نظامك قد تعرض للاستغلال؟ يمكنك فحص سجلات مصادقة SSH بحثاً عن أي عمليات تسجيل دخول بكلمة سر لحسابات لا ينبغي أن تسمح بذلك. على Alpine Linux، يمكن للأمر التالي أن يكشف عن عمليات تسجيل الدخول الناجحة بكلمة سر: grep "Accepted password" /var/log/messages. إذا أظهرت السجلات تسجيل دخول ناجحاً بكلمة سر لحساب 'alpine'، فيمكنك التحقق مما إذا كان هذا الحساب قد عُطلت فيه مصادقة كلمة السر: grep '^alpine:' /etc/shadow. إذا كان حقل كلمة السر للحساب يحتوي على علامة النجمة (*)، ولكن سجلات SSH تظهر تسجيل دخول ناجحاً بكلمة سر، فقد يشير ذلك إلى استغلال الثغرة.
ماذا يعني هذا لك؟
- تأكد من تحديث OpenSSH إلى الإصدار 10.6p2 في أقرب وقت لحماية أنظمتك.
- إذا لم تتمكن من التحديث فوراً، عطل خاصية تسجيل الدخول بكلمة السر في إعدادات SSH كإجراء وقائي.
- راجع سجلات SSH لديك بانتظام بحثاً عن أي محاولات دخول مشبوهة لحسابات يفترض أنها معطلة بكلمة سر.
- إذا كنت تستخدم Alpine Linux على منصات سحابية مثل AWS أو Azure، فكن حذراً بشكل خاص من حساب 'alpine' الافتراضي لديك.

