
CVE-2022-20866 के लिए RSA कुंजी जाँचकर्ता
RSA कुंजियों के प्रबंधन में एक भेद्यता, जो Cisco एडेप्टिव सुरक्षा उपकरण सॉफ़्टवेयर और Firepower थ्रेट डिफेंस सॉफ़्टवेयर चलाने वाले उपकरणों पर पाई जाती है, एक अप्रमाणित, दूरस्थ हमलावर को RSA निजी कुंजी प्राप्त करने की अनुमति दे सकती है। यह भेद्यता एक तर्क त्रुटि के कारण होती है जब RSA कुंजी को हार्डवेयर-आधारित क्रिप्टोग्राफी करने वाले हार्डवेयर प्लेटफ़ॉर्म पर मेमोरी में संग्रहीत किया जाता है। एक हमलावर लेंस्ट्रा साइड-चैनल हमले का उपयोग करके लक्षित उपकरण के विरुद्ध इस भेद्यता का शोषण कर सकता है। एक सफल शोषण हमलावर को RSA निजी कुंजी प्राप्त करने की अनुमति दे सकता है।
एक भेद्य उपकरण में निम्नलिखित स्थितियाँ देखी जा सकती हैं:
यह उपकरण आपको Cisco ASA या FTD उपकरणों में निजी RSA कुंजी की जाँच करने की अनुमति देता है।
Cisco सुरक्षा सलाहकार निम्नलिखित लिंक पर उपलब्ध है: https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-asaftd-rsa-key-leak-Ms7UEfZz
key_check.py उपकरण का उद्देश्य ASA या FTD से निर्यात की गई कुंजियों का "Cisco RSA Private Key Leak Vulnerability (CVE-2022-20866)" के प्रति संवेदनशीलता के लिए विश्लेषण करना है।
key_check.py एक सामुदायिक समर्थित उपकरण है जो लिनक्स शेल वातावरण में चलता है और इसकी निम्नलिखित निर्भरताएँ हैं:
यह उपकरण प्लेटफ़ॉर्म-अज्ञेय होने के लिए डिज़ाइन किया गया है, और निम्नलिखित प्लेटफ़ॉर्म कॉन्फ़िगरेशन पर परीक्षण किया गया है:
सिंटैक्स:
key_check.py [-h] --pkcs12 PKCS12 [--passwd PASSWD]
पैरामीटर:
-h
सहायता जानकारी प्रदर्शित करें
--pkcs12
विश्लेषण करने के लिए कुंजी वाली फ़ाइल का नाम base64
एन्कोडेड PKCS12 प्रारूप में। यह फ़ाइल ASA
या FTD डिवाइस से नीचे वर्णित प्रक्रिया का उपयोग करके निर्यात की जाती है।
--passwd
PKCS12 को डिक्रिप्ट करने के लिए आवश्यक पासवर्ड। यह वही
मान है जो कुंजी निर्यात करते समय ASA या FTD CLI पर दर्ज किया गया था।
यदि यह विकल्प निर्दिष्ट नहीं किया गया है, तो
उपकरण पासवर्ड के लिए संकेत देगा।
यह अनुभाग बताता है कि ASA डिवाइस से एक कुंजी कैसे निर्यात करें। विश्लेषण की जाने वाली प्रत्येक कुंजी के लिए इस प्रक्रिया का पालन करना होगा। 2 परिदृश्य हैं:
ट्रस्टपॉइंट आपको प्रमाणपत्र प्राधिकरणों (CAs) और प्रमाणपत्रों का प्रबंधन और ट्रैक करने देते हैं। एक ट्रस्टपॉइंट एक CA या पहचान जोड़ी का प्रतिनिधित्व है। एक ट्रस्टपॉइंट में CA की पहचान, CA-विशिष्ट कॉन्फ़िगरेशन पैरामीटर और एक, नामांकित पहचान प्रमाणपत्र के साथ एक संबंध शामिल होता है। यदि कुंजी जोड़ी का उपयोग ASA पर कॉन्फ़िगर किए गए प्रमाणपत्र में किया जाता है, तो कुंजी जोड़ी को दर्ज करके निर्यात किया जा सकता है:
# asa(config)# crypto ca export <tpname> pkcs12 test
जहाँ ट्रस्टपॉइंट का नाम है।
यदि कुंजी ASA पर कॉन्फ़िगर किए गए प्रमाणपत्र में मौजूद नहीं है, तो एक अस्थायी ट्रस्टपॉइंट बनाने और स्व-हस्ताक्षरित प्रमाणपत्र से नामांकित करने की आवश्यकता है।
मान लें keyname निर्यात की जाने वाली कुंजी जोड़ी का नाम है। मान लें temptp एक अस्थायी ट्रस्टपॉइंट के लिए उपयोग किया जाने वाला नाम है।
# asa(config)# crypto ca trustpoint temptp
# asa(config-ca-trustpoint)# keypair keyname
# asa(config-ca-trustpoint)# subject-name cn=temp
# asa(config-ca-trustpoint)# no serial-number
# asa(config-ca-trustpoint)# enroll self
# asa(config-ca-trustpoint)# crypto ca enroll temp noconfirm
अब PKCS12 उत्पन्न करें:
# asa(config)# crypto ca export xtp pkcs12 test
उपरोक्त दो प्रक्रियाएँ (1, 2) पासवर्ड "test" के साथ एक base64 एन्कोडेड p12 को कंसोल पर डंप करेंगी। सभी आउटपुट लाइनों को एक टेक्स्ट फ़ाइल में रखें। इस फ़ाइल का उपयोग उपकरण के इनपुट के रूप में किया जाएगा।
FTD उपकरणों पर, प्रक्रिया के लिए FMC के उपयोग की आवश्यकता होती है जैसा कि निम्नानुसार है। ध्यान दें कि FTD पर कुंजियाँ स्वतंत्र रूप से प्रबंधनीय नहीं हैं, इसलिए सभी कुंजियों का एक संबद्ध प्रमाणपत्र होना चाहिए।
निम्नलिखित निर्यात की गई PKCS12 फ़ाइल की सामग्री दृश्य सत्यापन के उद्देश्य से शामिल किया गया है, जो इस प्रकार दिखनी चाहिए:
-----BEGIN PKCS12-----
MIIJvwIBAzCCCXUGCSqGSIb3DQEHAaCCCWYEggliMIIJXjCCA78GCSqGSIb3DQEH
BqCCA7AwggOsAgEAMIIDpQYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQMwDgQIwsRZ
<पंक्तियाँ छोड़ी गईं>
geRPZxLUjt8nsc0bbrmEkXJ/27EbUm43UkioncY7JJwwQTAxMA0GCWCGSAFlAwQC
AQUABCAMZ7IR6nXHNbZ5zdtVAQX90VZyu2pvnJpiYgWWEf+WngQI9H/zlSTGKeAC
AggA
-----END PKCS12-----
उपकरण का उपयोग निम्नलिखित उदाहरणों के माध्यम से दिखाया गया है जो सभी संभावित परिणामों को प्रदर्शित करते हैं।
linux> ./key_check.py --passwd test --pkcs12 valid_normal.p12.b64
RSA कुंजी मान्य है।
linux> ./key_check.py --passwd test --pkcs12 valid_short.p12.b64
RSA कुंजी मान्य है लेकिन यदि उत्पाद संस्करणों में उपयोग किया जाता है जो Cisco Private Key Leak Vulnerability (CVE-2022-20866) से प्रभावित हैं, तो यह एक्सपोज़र के लिए भेद्य है। यदि ऐसा किया गया था, तो इस कुंजी का अब उपयोग नहीं किया जाना चाहिए।
linux> ./key_check.py --passwd test --pkcs12 inval_not_vulnerable.p12.b64
RSA कुंजी Cisco RSA Private Key Leak Vulnerability (CVE-2022-20866) के कारण अमान्य है लेकिन इसमें ज्ञात एक्सपोज़र विशेषताएँ नहीं हैं। यह अनुशंसा की जाती है कि इस कुंजी को बदल दिया जाए।
linux> ./key_check.py --passwd test --pkcs12 inval_vulnerable.p12.b64
RSA कुंजी Cisco RSA Private Key Leak Vulnerability (CVE-2022-20866) के कारण अमान्य और एक्सपोज़र के लिए भेद्य है। इस कुंजी का अब उपयोग नहीं किया जाना चाहिए।
linux> ./key_check.py --passwd test2 --pkcs12 valid_normal.p12.b64
त्रुटि: Mac सत्यापन त्रुटि: अमान्य पासवर्ड?
linux> ./key_check.py --passwd test --pkcs12 bad_file.txt
त्रुटि: 139710534743952:error:0D07207B:asn1 encoding routines:ASN1_get_object:header too long:asn1_lib.c:157:
linux> ./key_check.py --passwd test --pkcs12 ecdsa.p12.b64
त्रुटि: 140300676220816:error:0607907F:digital envelope routines:EVP_PKEY_get1_RSA:expecting an rsa key:p_lib.c:287: