تم الآن طرح إثبات عام للمفهوم CVE-2026-55200، وهو عيب خطير في libssh2 يسمح لخادم SSH الضار أو المخترق بإحداث تلف في الذاكرة على عميل متصل، مع إمكانية تنفيذ التعليمات البرمجية. لا توجد بيانات اعتماد، ولا تفاعل المستخدم. يؤثر الخطأ على كل إصدار حتى 1.11.1 ويحمل درجة CVSS 4.0 9.2.
libssh2 هي مكتبة SSH من جانب العميل، وليست خادمًا. هذا التمييز مهم. إنه مضمن في curl وGit وPHP ووكلاء النسخ الاحتياطي ومحدثي البرامج الثابتة ومجموعة طويلة من الأجهزة.
أي شيء يربطه ويصل إلى نقطة نهاية SSH غير موثوقة يعد هدفًا محتملاً. العديد من هذه النسخ مرتبطة بشكل ثابت، لذلك لن يؤثر عليها تحديث حزمة التوزيعة، وقد لا تعلم بوجودها.
كيف يعمل الخطأ
يوجد الخلل في ssh2_transport_read() في Transport.c، وهي الوظيفة التي تقوم بتوزيع حزم SSH الواردة أثناء المصافحة. كان يقرأ حقل طول الحزمة الذي يتحكم فيه المهاجم ويرفض فقط القيم الأقل من 1. ولم يفرض حدًا أعلى مطلقًا.
يضيف حساب الحجم طول الحزمة إلى قيمتين صغيرتين باستخدام حساب 32 بت، لذا فإن طول 0xffffffff يلتف حول رقم صغير. يقوم libssh2 بعد ذلك بتخصيص مخزن مؤقت بحجم العدد الصغير، بينما يقوم الكود لاحقًا بكتابة الحزمة الكاملة كبيرة الحجم فيه.
والنتيجة هي كتابة كومة خارج الحدود، مصنفة على أنها CWE-680، تجاوز عدد صحيح إلى تجاوز سعة المخزن المؤقت، وهو أمر بدائي كلاسيكي لتنفيذ التعليمات البرمجية. يضيف الإصلاح التحقق المفقود، ويرفض أي طول حزمة أعلى من LIBSSH2_PACKET_MAXPAYLOAD قبل تشغيل العملية الحسابية.
لقد تعثر libssh2 في هذا من قبل. في عام 2019، قامت بشحن الإصدار 1.8.1 لإصلاح مجموعة من تسعة عيوب بقيادة CVE-2019-3855، وهو تجاوز عدد صحيح شبه متطابق في قراءة النقل الخاصة به والذي يسمح أيضًا لخادم ضار بتشغيل تعليمات برمجية على عميل متصل. وبعد مرور سبع سنوات، عادت نفس فئة الأخطاء وبنفس الكود.
أبلغ الباحث الأمني تريستان مدني عن هذه المشكلة. قام القائمون على الصيانة بدمج التصحيح من خلال طلب السحب رقم 2052 في 12 يونيو. وقام VulnCheck بنشر CVE في 17 يونيو.
تم نشر إثبات عام للمفهوم في “exploitarium”، وهو أرشيف GitHub لرمز الاستغلال الذي يقول مؤلفه إن الإدخالات تم نشرها دون الإبلاغ المسبق. يحتوي الأرشيف على سقالة تشغيل SSH تم التحقق منها محليًا وأداة RCE محلية يتم التحكم فيها لخطأ libssh2، وليس استغلالًا جاهزًا عن بُعد. سيظل تنفيذ التعليمات البرمجية الموثوق به ضد التطبيق المباشر يعتمد على الثنائي المستهدف، وسلوك المُخصص، وعمليات التخفيف، وكيفية تضمين البرنامج لـ libssh2.
السياق يستحق وزنه. يقر المؤلف بأن الأرشيف خرج غير مكتمل، حيث كانت بعض الإدخالات ضعيفة وكان الذكاء الاصطناعي هو الذي أدى إلى التشويش. اعتبارًا من الآن، لا يزال تصنيف استغلال CISA لـ CVE لا يوجد، ولم يتم الإبلاغ عن أي استخدام في البرية.
ما يجب القيام به
لا يوجد إصدار ثابت لـ libssh2 حتى الآن. يوجد التصحيح في المصدر الرئيسي، ولا يزال الإصدار الموسوم قيد الإعداد، لذا فإن توزيعات Linux والمشاريع النهائية تقوم بنقله بنفسها؛ دبيان، على سبيل المثال، لديه بالفعل بنية تم إصلاحها قيد الاختبار.
أصدرت NHS England Digital استشارة تحث المنظمات المتضررة على التحديث.
- قم بجرد كل ما يربط libssh2، بما في ذلك النسخ الثابتة أو المجمعة التي لن يقوم مديرو الحزم بوضع علامة عليها. تُعد عمليات النشر curl وGit وPHP من الناقلات الشائعة.
- قم بتطبيق إصدار يتضمن الالتزام 97acf3d، سواء كان إصدارًا خلفيًا للتوزيع أو إصدار مصدر مصححًا، وشاهد القناة الاستشارية للبائع الخاص بك للتعرف على حالة الإصدار.
- حتى يتم التصحيح، قم بتقييد اتصالات SSH الصادرة بالخوادم الموثوقة والتحقق من مفاتيح المضيف. قم بإعطاء الأولوية للعملاء الذين يصلون إلى خوادم SSH خارجية أو يحلون المضيفين من خلال الأسماء التي يمكن للمهاجم إعادة توجيهها. انتبه إلى حالات الشذوذ كبيرة الحجم في الحزم وأعطال العميل غير المبررة.
قم بتصحيح بقية الدفعة أيضًا: CVE-2026-55199 (CVSS 8.2)، وهو رفض الخدمة الذي يحبس عميل متصل في حلقة وحدة المعالجة المركزية (CPU) عبر عدد امتدادات زائف، وCVE-2025-15661 (CVSS 8.3)، وقراءة زائدة في كومة SFTP.
تكمن المشكلة الأساسية في وجود خطأ يتعلق بتلف الذاكرة في التعليمات البرمجية قبل المصادقة، والذي يأتي داخل عدد أكبر من العملاء والأجهزة أكثر مما قام أي شخص بتعيينه بالكامل.
الأسئلة المفتوحة هي مدى سرعة قيام شخص ما بتحويل الحزام المحلي إلى برنامج استغلال عن بعد يمكن الاعتماد عليه، وكم عدد النسخ المجمعة التي تظل معرضة للخطر لأنه لا أحد يتذكر أنه قام بشحن libssh2 بالداخل.
