ثغرة أمنية في TLS تسمح بتحديد المفاتيح للاتصالات بناءً على شفرات DH

مكشوف معلومات عن الجديد نقاط الضعف (CVE-2020-1968) في بروتوكول TLS، الذي يحمل الاسم الرمزي
حيوان الراكون والسماح، في حالات نادرة، بتحديد مفتاح أساسي أولي (ما قبل رئيسي)، والذي يمكن استخدامه لفك تشفير اتصالات TLS، بما في ذلك HTTPS، عند اعتراض حركة المرور العابرة (MITM). ويلاحظ أن الهجوم صعب للغاية من حيث التنفيذ العملي وهو ذو طبيعة نظرية أكثر. لتنفيذ هجوم، يلزم تكوين محدد لخادم TLS والقدرة على قياس وقت معالجة الخادم بدقة شديدة.

المشكلة موجودة مباشرة في مواصفات TLS وتؤثر فقط على الاتصالات التي تستخدم الأصفار المستندة إلى بروتوكول تبادل مفاتيح DH (Diffie-Hellman, TLS_DH_*"). مع شفرات ECDH، لا تحدث المشكلة وتظل آمنة. فقط بروتوكولات TLS حتى الإصدار 1.2 هي المعرضة للخطر، بينما لا يتأثر TLS 1.3 بالمشكلة. تحدث الثغرة الأمنية في تطبيقات TLS التي تعيد استخدام مفتاح DH السري عبر اتصالات TLS مختلفة (يحدث هذا السلوك على حوالي 4.4% من خوادم Alexa Top 1M).

في OpenSSL 1.0.2e والإصدارات السابقة، تتم إعادة استخدام مفتاح DH الأساسي في كافة اتصالات الخادم ما لم يتم تعيين خيار SSL_OP_SINGLE_DH_USE بشكل صريح. منذ OpenSSL 1.0.2f، يتم إعادة استخدام المفتاح الأساسي DH فقط عند استخدام شفرات DH الثابتة ("DH-*"، على سبيل المثال "DH-RSA-AES256-SHA"). لا تظهر الثغرة الأمنية في OpenSSL 1.1.1، نظرًا لأن هذا الفرع لا يستخدم مفتاح DH الأساسي ولا يستخدم تشفير DH الثابت.

عند استخدام طريقة تبادل مفتاح DH، يقوم كلا جانبي الاتصال بإنشاء مفاتيح خاصة عشوائية (يشار إليها فيما بعد بالمفتاح "a" والمفتاح "b")، بناءً على حساب المفاتيح العامة (ga mod p وgb mod p) وإرسالها. بعد أن يتلقى كل طرف المفاتيح العامة، يتم حساب مفتاح أساسي مشترك (gab mod p)، والذي يستخدم لإنشاء مفاتيح الجلسة. يتيح لك هجوم Raccoon تحديد المفتاح الأساسي من خلال تحليل القناة الجانبية، استنادًا إلى حقيقة أن مواصفات TLS حتى الإصدار 1.2 تتطلب التخلص من جميع البايتات الفارغة للمفتاح الأساسي قبل إجراء العمليات الحسابية التي تتضمنه.

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

إن تحديد بايت واحد من المفتاح في حد ذاته لا يعطي أي شيء، ولكن من خلال اعتراض قيمة “ga” التي يرسلها العميل أثناء التفاوض على الاتصال، يستطيع المهاجم توليد مجموعة من القيم الأخرى المرتبطة بـ “ga” وإرسالها إلى الخادم في جلسات تفاوض اتصال منفصلة. ومن خلال توليد وإرسال قيم “gri*ga”، يستطيع المهاجم، من خلال تحليل التغيرات في التأخير في استجابة الخادم، تحديد القيم التي تؤدي إلى استلام المفاتيح الأساسية بدءًا من الصفر. وبعد تحديد هذه القيم، يمكن للمهاجم إنشاء مجموعة من المعادلات لـ حلول مشاكل الارقام المخفية وحساب المفتاح الأساسي الأصلي.

ثغرة أمنية في TLS تسمح بتحديد المفاتيح للاتصالات بناءً على شفرات DH

نقاط الضعف OpenSSL مُكَلَّف انخفاض مستوى الخطر، وتم تقليل الإصلاح إلى نقل الأصفار التي بها مشكلات "TLS_DH_*" في الإصدار 1.0.2w إلى فئة الأصفار ذات مستوى الحماية غير الكافي ("أصفار SSL الضعيفة")، والتي يتم تعطيلها افتراضيًا . مطورو موزيلا فعلوا نفس الشيء، أطفئ في مكتبة NSS المستخدمة في Firefox، ومجموعات التشفير DH وDHE. اعتبارًا من Firefox 78، تم تعطيل الأصفار التي بها مشكلات. تم إيقاف دعم Chrome لـ DH مرة أخرى في عام 2016. لا تتأثر مكتبات BearSSL وBoringSSL وBotan وMbed TLS وs2n بالمشكلة لأنها لا تدعم تشفير DH أو المتغيرات الثابتة لشفرات DH.

تتم الإشارة إلى مشاكل إضافية بشكل منفصل (CVE-2020-5929) في حزمة TLS الخاصة بأجهزة F5 BIG-IP، مما يجعل الهجوم أكثر واقعية. على وجه الخصوص، تم تحديد الانحرافات في سلوك الأجهزة في وجود صفر بايت في بداية المفتاح الأساسي، والتي يمكن استخدامها بدلاً من قياس زمن الوصول الدقيق للحسابات.

المصدر: opennet.ru

إضافة تعليق