CVE-2024-5535
ثغرة تجاوز قراءة المخزن المؤقت في SSL_select_next_proto
- تم النشر
- 27/06/2024
- محدث
- 12/05/2026
- تخصيص CNA
- openssl
- الأدلة المرصودة
- 05/08/2026
CVSS الأساسي
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:Hمنخفض · الثلاثين يومًا القادمة
- المئوية
- 92.6%
- تاريخ الموديل
- 21/09/2026
EPSS هو تقدير إحصائي، وليس يقينًا أو مقياسًا للتأثير. ادمجها مع CVSS وحالة KEV والتعرض وبيئتك.
ملخص
ملخص المشكلة: استدعاء دالة OpenSSL API `SSL_select_next_proto` مع مخزن مؤقت فارغ لبروتوكولات العميل المدعومة قد يتسبب في تعطل أو إرسال محتويات الذاكرة إلى النظير. ملخص التأثير: يمكن أن يكون لقراءة تتجاوز حدود المخزن المؤقت مجموعة من العواقب المحتملة مثل سلوك تطبيق غير متوقع أو تعطل. على وجه الخصوص، قد تؤدي هذه المشكلة إلى إرسال ما يصل إلى 255 بايت من بيانات خاصة عشوائية من الذاكرة إلى النظير مما يؤدي إلى فقدان السرية. ومع ذلك، فقط التطبيقات التي تستدعي دالة `SSL_select_next_proto` مباشرة مع قائمة بطول 0 من بروتوكولات العميل المدعومة تتأثر بهذه المشكلة. هذا لن يكون عادةً سيناريو صالحًا وليس عادةً تحت سيطرة المهاجم ولكن قد يحدث عن طريق الخطأ في حالة خطأ في التكوين أو البرمجة في التطبيق المستدعي. دالة OpenSSL API `SSL_select_next_proto` تُستخدم عادةً من قبل تطبيقات TLS التي تدعم ALPN (تفاوض بروتوكول طبقة التطبيق) أو NPN (تفاوض البروتوكول التالي). NPN أقدم، ولم يتم توحيده أبدًا، وهو مهمل لصالح ALPN. نعتقد أن ALPN أكثر انتشارًا بشكل ملحوظ من NPN. تقبل دالة `SSL_select_next_proto` قائمة بروتوكولات من الخادم وقائمة بروتوكولات من العميل وتُرجع أول بروتوكول يظهر في قائمة الخادم ويظهر أيضًا في قائمة العميل. في حالة عدم وجود تداخل بين القائمتين، تُرجع العنصر الأول في قائمة العميل. في كلتا الحالتين، ستشير إلى ما إذا تم العثور على تداخل بين القائمتين. في الحالة التي يتم فيها استدعاء `SSL_select_next_proto` مع قائمة عميل بطول صفر، تفشل في ملاحظة هذا الشرط وتُرجع الذاكرة التي تلي مؤشر قائمة العميل مباشرة (وتبلغ بعدم وجود تداخل في القائمتين). تُستدعى هذه الدالة عادةً من رد اتصال تطبيق من جانب الخادم لـ ALPN أو رد اتصال تطبيق من جانب العميل لـ NPN. في حالة ALPN، تضمن libssl أن قائمة البروتوكولات المقدمة من العميل لا تكون أبدًا بطول صفر. قائمة بروتوكولات الخادم تأتي من التطبيق ولا ينبغي عادةً توقع أن تكون بطول صفر. في هذه الحالة، إذا تم استدعاء دالة `SSL_select_next_proto` كما هو متوقع (مع تمرير القائمة المقدمة من العميل في معاملات client/client_len)، فلن يكون التطبيق عرضة لهذه المشكلة. إذا تم تكوين التطبيق عن طريق الخطأ بقائمة خادم بطول صفر، وتم تمرير قائمة الخادم ذات الطول الصفر عن طريق الخطأ في معاملات client/client_len، وفشل أيضًا في معالجة استجابة "عدم التداخل" بشكل صحيح (والتي من شأنها عادةً أن تؤدي إلى فشل المصافحة في ALPN)، فسيكون عرضة لهذه المشكلة. في حالة NPN، يسمح البروتوكول للعميل باختيار بروتوكول بشكل انتهازي عندما لا يوجد تداخل. يُرجع OpenSSL أول بروتوكول عميل في حالة عدم التداخل دعمًا لذلك. قائمة بروتوكولات العميل تأتي من التطبيق ولا ينبغي عادةً توقع أن تكون بطول صفر. ومع ذلك، إذا تم استدعاء دالة `SSL_select_next_proto` عن طريق الخطأ مع client_len بقيمة 0، فسيتم إرجاع مؤشر ذاكرة غير صالح بدلاً من ذلك. إذا استخدم التطبيق هذا الناتج كبروتوكول انتهازي، فسيحدث فقدان السرية. تم تقييم هذه المشكلة على أنها منخفضة الخطورة لأن التطبيقات من المرجح أن تكون عرضة إذا كانت تستخدم NPN بدلاً من ALPN - لكن NPN ليست مستخدمة على نطاق واسع. كما تتطلب خطأ في تكوين التطبيق أو برمجته. أخيرًا، لن تكون هذه المشكلة عادةً تحت سيطرة المهاجم مما يجعل الاستغلال النشط غير محتمل. وحدات FIPS في الإصدارات 3.3 و3.2 و3.1 و3.0 غير متأثرة بهذه المشكلة. نظرًا لانخفاض خطورة هذه المشكلة، لن نصدر إصدارات جديدة من OpenSSL في هذا الوقت. سيتم تضمين الإصلاح في الإصدارات القادمة عندما تصبح متاحة.
الاستخدام المسؤول
استخدم معلومات الثغرات الأمنية فقط على الأنظمة التي تمتلكها أو المرخص لها باختبارها. يرتبط Kitploit ببيانات تعريف البحث العامة ولا يخزن أكواد الاستغلال أو الحمولات الضارة.