
إثبات مفهوم عن بعد لـ CVE-2022-0778 يقوم بحقن شهادة مصممة ضمن مصافحة TLS لإطلاق ثغرة رفض الخدمة OpenSSL BN_mod_sqrt().
POC بسيط للتحريك عن بُعد لـ CVE-2022-0778
أثناء محاولة التحقق مما إذا كانت تطبيقات الخادم في جانبنا معرضة لـ CVE-2022-0778، ثبت أن القيام بذلك عن بُعد صعب للغاية. تعليمات إنشاء شهادات مصممة بشكل خبيث لتشغيل ثغرة التحليل في BN_nod_sqrt() كانت موجودة منذ فترة، ولكن المشكلة الرئيسية هي أن معظم تطبيقات العميل تحاول تحليل شهادة العميل لاستخدامها في مصافحة TLS. وهذا بدوره يعني:
ما كان مطلوبًا في الواقع هو القدرة على حقن رسالة في مصافحة TLS بحيث يمكننا استبدال محتويات رسالة الشهادة التي يرسلها العميل إلى الخادم استجابةً لرسالة CertificateRequest.
يعتمد هذا على tlslite-ng ويتجاوز طريقة TLSConnection._clientKeyExchange بحيث أثناء مصافحة TLS مع خادم قد يكون معرضًا للخطر:
تم إنشاء crafted.crt بناءً على التعليمات في https://github.com/drago-96/CVE-2022-0778#using-asn1-templates، لا تتردد في إعادة إنشائه إذا كنت ترغب في ذلك.
usage: main.py [-h] [--server SERVER] [--port PORT]
Parameters
optional arguments:
-h, --help show this help message and exit
--server SERVER Name of the server to connect for the TLS handshake,
defaults to "localhost"
--port PORT Port where server listens for TLS connections, defaults to
"443"