تم إصدار OpenSSH 9.2 مع إصلاح ثغرة المصادقة المسبقة

تم نشر إصدار OpenSSH 9.2، وهو تطبيق مفتوح للعميل والخادم للعمل باستخدام بروتوكولي SSH 2.0 وSFTP. يزيل الإصدار الجديد ثغرة أمنية تؤدي إلى تحرير مزدوج للذاكرة في مرحلة ما قبل المصادقة. فقط الإصدار OpenSSH 9.1 هو المتأثر، ولا تظهر المشكلة في الإصدارات السابقة.

لتهيئة الظروف لظهور الثغرة الأمنية، يكفي تغيير شعار عميل SSH إلى "SSH-2.0-FuTTYSH_9.1p1" لتعيين الإشارات "SSH_BUG_CURVE25519PAD" و"SSH_OLD_DHGEX"، التي تعتمد على إصدار SSH عميل. بعد تعيين هذه العلامات، يتم تحرير ذاكرة المخزن المؤقت "options.kex_algorithms" مرتين - عند تنفيذ الدالة do_ssh2_kex()، التي تستدعي compat_kex_proposal()، وعند تنفيذ الدالة do_authentication2()، التي تستدعي input_userauth_request()، mm_getpwnamallow( )، Copy_set_server_options () على طول السلسلة، assemble_algorithms () وkex_assemble_names ().

من غير المحتمل إنشاء استغلال فعال للثغرة الأمنية، نظرًا لأن عملية الاستغلال معقدة للغاية - توفر مكتبات تخصيص الذاكرة الحديثة الحماية ضد التحرير المزدوج للذاكرة، وعملية المصادقة المسبقة التي يوجد فيها الخطأ تعمل بامتيازات منخفضة في بيئة معزولة بيئة رمل.

بالإضافة إلى الثغرة الأمنية المذكورة، يعمل الإصدار الجديد أيضًا على إصلاح مشكلتين أمنيتين إضافيتين:

  • حدث خطأ أثناء معالجة إعداد "PermitRemoteOpen"، مما تسبب في تجاهل الوسيطة الأولى إذا كانت تختلف عن القيمتين "any" و"none". تظهر المشكلة في الإصدارات الأحدث من OpenSSH 8.7 وتتسبب في تخطي عملية التحقق عند تحديد إذن واحد فقط.
  • يمكن للمهاجم الذي يتحكم في خادم DNS المستخدم لحل الأسماء تحقيق استبدال الأحرف الخاصة (على سبيل المثال، "*") في ملفاتknown_hosts إذا تم تمكين خيارات CanonicalizeHostname وCanonicalizePermitCNAMEs في التكوين، ولم يتحقق محلل النظام من صحة الاستجابات من خادم DNS. يعتبر الهجوم غير محتمل لأن الأسماء التي تم إرجاعها يجب أن تتطابق مع الشروط المحددة من خلال CanonicalizePermitCNAMEs.

تغييرات أخرى:

  • تمت إضافة إعداد EnableEscapeCommandline إلى ssh_config لـ ssh للتحكم في تمكين المعالجة من جانب العميل لتسلسل الهروب "~C" الذي يوفر سطر الأوامر. افتراضيًا، يتم الآن تعطيل معالجة "~C" لاستخدام عزل أكثر إحكامًا لصندوق الحماية، مما قد يؤدي إلى كسر الأنظمة التي تستخدم "~C" لإعادة توجيه المنفذ في وقت التشغيل.
  • تمت إضافة توجيه ChannelTimeout إلى sshd_config لـ sshd لتعيين مهلة عدم نشاط القناة (سيتم إغلاق القنوات التي لم يتم تسجيل أي حركة مرور فيها خلال الوقت المحدد في التوجيه تلقائيًا). يمكن تعيين مهلات مختلفة للجلسة وX11 والوكيل وإعادة توجيه حركة المرور.
  • تمت إضافة توجيه UnusedConnectionTimeout إلى sshd_config لـ sshd، مما يسمح لك بتعيين مهلة لإنهاء اتصالات العميل التي كانت بدون قنوات نشطة لفترة معينة.
  • تمت إضافة الخيار "-V" إلى sshd لعرض الإصدار، على غرار الخيار المماثل في عميل ssh.
  • تمت إضافة السطر "Host" إلى إخراج "ssh -G"، مما يعكس قيمة وسيطة اسم المضيف.
  • تمت إضافة الخيار "-X" إلى scp وsftp للتحكم في معلمات بروتوكول SFTP مثل حجم المخزن المؤقت للنسخ وعدد الطلبات المعلقة.
  • يسمح ssh-keyscan بفحص نطاقات عناوين CIDR الكاملة، على سبيل المثال "ssh-keyscan 192.168.0.0/24".

المصدر: opennet.ru

إضافة تعليق