
CVE-2022-0778 के लिए रिमोट प्रूफ-ऑफ-कॉन्सेप्ट जो TLS हैंडशेक में एक क्राफ्टेड सर्टिफिकेट इंजेक्ट करता है ताकि OpenSSL BN_mod_sqrt() सेवा-अस्वीकृति (denial-of-service) भेद्यता को ट्रिगर किया जा सके।
CVE-2022-0778 के लिए एक सरल रिमोट ट्रिगरिंग POC
जब हम अपनी ओर से सर्वर कार्यान्वयनों की जाँच करने का प्रयास कर रहे थे कि वे 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"