يؤدي إهمال شهادة جذر AddTrust إلى حدوث أعطال في أنظمة OpenSSL وGnuTLS

في 30 مايو، انتهت فترة صلاحية شهادة الجذر البالغة 20 عامًا إضافة الثقةالتي مُطبَّق لإنشاء شهادات موقعة بشكل متقاطع لواحدة من أكبر هيئات التصديق Sectigo (Comodo). يسمح التوقيع المتبادل بالتوافق مع الأجهزة القديمة التي لم تتم إضافة شهادة جذر USERTRust الجديدة إلى مخزن الشهادات الجذرية الخاصة بها.

يؤدي إهمال شهادة جذر AddTrust إلى حدوث أعطال في أنظمة OpenSSL وGnuTLS

من الناحية النظرية، يجب أن يؤدي إنهاء شهادة جذر AddTrust فقط إلى انتهاك التوافق مع الأنظمة القديمة (Android 2.3 وWindows XP وMac OS X 10.11 وiOS 9 وما إلى ذلك)، حيث تظل شهادة الجذر الثانية المستخدمة في التوقيع المتبادل تأخذها المتصفحات الصحيحة والحديثة في الاعتبار عند التحقق من سلسلة الثقة. في الممارسة ظهر مشكلات تتعلق بالتحقق من التوقيع المتبادل في عملاء TLS غير المستعرضين، بما في ذلك تلك المستندة إلى OpenSSL 1.0.x وGnuTLS. لم يعد يتم إنشاء اتصال آمن مع وجود خطأ يشير إلى أن الشهادة قديمة إذا كان الخادم يستخدم شهادة Sectigo المرتبطة بسلسلة ثقة بشهادة جذر AddTrust.

إذا لم يلاحظ مستخدمو المتصفحات الحديثة تقادم شهادة جذر AddTrust عند معالجة شهادات Sectigo الموقعة بشكل متقاطع، فقد بدأت المشكلات في الظهور في العديد من تطبيقات الطرف الثالث والمعالجات من جانب الخادم، مما أدى إلى انتهاك عمل العديد من البنى التحتية التي تستخدم قنوات الاتصال المشفرة للتفاعل بين المكونات.

على سبيل المثال، كان هناك مشاكل مع الوصول إلى بعض مستودعات الحزم في Debian وUbuntu (بدأت apt في إنشاء خطأ في التحقق من الشهادة)، بدأت الطلبات من البرامج النصية باستخدام الأدوات المساعدة "curl" و"wget" بالفشل، وقد لوحظت أخطاء عند استخدام Git، انتهكت منصة البث Roku تعمل، ولم يعد يتم استدعاء المعالجات شريط и DataDog، بدأت تحدث الأعطال في تطبيقات Heroku، توقفت يتصل عملاء OpenLDAP، ويتم اكتشاف مشاكل في إرسال البريد إلى خوادم SMTPS وSMTP مع STARTTLS. بالإضافة إلى ذلك، تمت ملاحظة المشكلات في العديد من البرامج النصية Ruby وPHP وPython التي تستخدم وحدة نمطية مع عميل http. مشكلة في المتصفح يؤثر عيد الغطاس، الذي توقف عن تحميل قوائم حظر الإعلانات.

لا تتأثر برامج Go بهذه المشكلة لأن عروض Go التنفيذ الخاص TLS.

كان من المفترض أنأن المشكلة تؤثر على إصدارات التوزيع الأقدم (بما في ذلك Debian 9 وUbuntu 16.04 و هيل 6/7) التي تستخدم فروع OpenSSL إشكالية، ولكن المشكلة تجلت وأيضًا عند تشغيل مدير حزم APT في الإصدارات الحالية من Debian 10 وUbuntu 18.04/20.04، نظرًا لأن APT تستخدم مكتبة GnuTLS. جوهر المشكلة هو أن العديد من مكتبات TLS/SSL تقوم بتحليل الشهادة كسلسلة خطية، بينما وفقًا لـ RFC 4158، يمكن أن تمثل الشهادة رسمًا بيانيًا دائريًا موزعًا موجهًا مع مراسي ثقة متعددة يجب أخذها في الاعتبار. حول هذا الخلل في OpenSSL وGnuTLS كان معروف لعدة سنوات. في OpenSSL تم إصلاح المشكلة في الفرع 1.1.1 وفي GnuTLS بقايا غير مصحح.

كحل بديل، يُقترح إزالة شهادة "AddTrust External CA Root" من مخزن النظام (على سبيل المثال، قم بإزالتها من /etc/ca-certificates.conf و/etc/ssl/certs، ثم قم بتشغيل "update-ca" -certificates -f -v")، وبعد ذلك يبدأ OpenSSL في معالجة الشهادات الموقعة بشكل طبيعي بمشاركتها. عند استخدام مدير حزم APT، يمكنك تعطيل التحقق من الشهادة للطلبات الفردية على مسؤوليتك الخاصة (على سبيل المثال، "apt-get update -o Acquire::https::download.jitsi.org::Verify-Peer=false") .

لمنع المشكلة في فيدورا и RHEL يُقترح إضافة شهادة AddTrust إلى القائمة السوداء:

trust dump —filter «pkcs11:id=%AD%BD%98%7A%34%B4%26%F7%FA%C4%26%54%EF%03%BD%E0%24%CB%54%1A;type=cert» \
> /etc/pki/ca-trust/source/blacklist/addtrust-external-root.p11-kit
استخراج التحديث-CA-الثقة

ولكن هذا الأسلوب لا يعمل بالنسبة إلى GnuTLS (على سبيل المثال، يستمر ظهور خطأ التحقق من الشهادة عند تشغيل الأداة المساعدة wget).

على جانب الخادم يمكنك تعديل النظام سرد الشهادات في سلسلة الثقة التي يرسلها الخادم إلى العميل (إذا تمت إزالة الشهادة المرتبطة بـ "AddTrust External CA Root" من القائمة، فسيكون التحقق من العميل ناجحًا). للتحقق من سلسلة ثقة جديدة وإنشاءها، يمكنك استخدام الخدمة Whatsmychaincert.com. القسم أيضا предоставила الشهادة المتوسطة البديلة ذات التوقيع المتقاطع "خدمات شهادة AAA"، والذي سيكون صالحًا حتى عام 2028 وسيحافظ على التوافق مع الإصدارات الأقدم من نظام التشغيل.

إضافة: مشكلة أيضاً يتجلى في ليبرSSL.

المصدر: opennet.ru

إضافة تعليق