
متحقق مفاتيح RSA لـ CVE-2022-20866
ثغرة في معالجة مفاتيح RSA على الأجهزة التي تشغل برنامج Cisco Adaptive Security Appliance Software وFirepower Threat Defense Software قد تسمح لمهاجم عن بعد غير موثوق باسترداد المفتاح الخاص لـ RSA. ترجع هذه الثغرة إلى خطأ منطقي عند تخزين مفتاح RSA في الذاكرة على منصة أجهزة تقوم بتشفير قائم على الأجهزة. يمكن للمهاجم استغلال هذه الثغرة باستخدام هجوم القناة الجانبية Lenstra ضد الجهاز المستهدف. قد يؤدي الاستغلال الناجح إلى تمكين المهاجم من استرداد المفتاح الخاص لـ RSA.
يمكن ملاحظة الشروط التالية في جهاز ضعيف:
تسمح لك هذه الأداة بالتحقق من المفتاح الخاص لـ RSA في أجهزة Cisco ASA أو FTD.
النشرة الأمنية لـ Cisco متاحة على الرابط التالي: https://tools.cisco.com/security/center/content/CiscoSecurityAdvisory/cisco-sa-asaftd-rsa-key-leak-Ms7UEfZz
الغرض من أداة key_check.py هو تحليل المفاتيح التي تم تصديرها من ASA أو FTD للتحقق من قابليتها للتأثر بـ "ثغرة تسرب المفتاح الخاص لـ RSA من Cisco (CVE-2022-20866)".
أداة key_check.py هي أداة مدعومة من المجتمع تعمل في بيئة shell لنظام Linux ولها التبعيات التالية:
صُممت هذه الأداة لتكون غير مرتبطة بنظام أساسي محدد، وقد تم اختبارها على تكوينات المنصات التالية:
الصيغة:
key_check.py [-h] --pkcs12 PKCS12 [--passwd PASSWD]
المعلمات:
-h
عرض معلومات المساعدة
--pkcs12
اسم الملف الذي يحتوي على المفتاح المراد تحليله بتنسيق PKCS12
المشفر بـ base64. يتم تصدير هذا الملف من جهاز ASA
أو FTD باستخدام الإجراء الموضح أدناه.
--passwd
كلمة المرور المطلوبة لفك تشفير ملف PKCS12. وهي نفس
القيمة التي تم إدخالها على واجهة سطر الأوامر لـ ASA أو FTD أثناء
تصدير المفتاح. إذا لم يتم تحديد هذا الخيار، فإن
الأداة ستطلب كلمة المرور.
يصف هذا القسم كيفية تصدير مفتاح واحد من جهاز ASA. يجب اتباع هذا الإجراء لكل مفتاح سيتم تحليله. هناك سيناريوهان:
تتيح لك Trustpoints إدارة وتتبع سلطات التصديق (CAs) والشهادات. Trustpoint هي تمثيل لـ CA أو زوج هوية. يتضمن Trustpoint هوية CA ومعلمات تكوين خاصة بـ CA وارتباط بشهادة هوية مسجلة واحدة. إذا تم استخدام زوج المفاتيح في شهادة مهيأة على ASA، فيمكن تصدير زوج المفاتيح عن طريق إدخال:
# asa(config)# crypto ca export <tpname> pkcs12 test
حيث هو اسم trustpoint.
إذا لم يكن المفتاح موجودًا في شهادة مهيأة على ASA، فيجب إنشاء trustpoint مؤقت وتسجيله بشهادة ذاتية التوقيع.
افترض أن keyname هو اسم زوج المفاتيح المراد تصديره. افترض أن temptp هو اسم مستخدم لـ trustpoint مؤقت
# 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) بإخراج ملف p12 مشفر بـ base64 بكلمة مرور "test" إلى وحدة التحكم. ضع جميع أسطر الإخراج في ملف نصي. سيتم استخدام هذا الملف كمدخل للأداة.
على أجهزة FTD، يتطلب الإجراء استخدام FMC كما يلي. لاحظ أن المفاتيح ليست قابلة للإدارة بشكل مستقل على FTD، لذلك يجب أن يكون لجميع المفاتيح شهادة مرتبطة.
يتم تضمين ما يلي لغرض التحقق البصري من محتويات ملف PKCS12 المُصدَّر، والذي يجب أن يبدو كما يلي:
-----BEGIN PKCS12-----
MIIJvwIBAzCCCXUGCSqGSIb3DQEHAaCCCWYEggliMIIJXjCCA78GCSqGSIb3DQEH
BqCCA7AwggOsAgEAMIIDpQYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQMwDgQIwsRZ
<lines omitted>
geRPZxLUjt8nsc0bbrmEkXJ/27EbUm43UkioncY7JJwwQTAxMA0GCWCGSAFlAwQC
AQUABCAMZ7IR6nXHNbZ5zdtVAQX90VZyu2pvnJpiYgWWEf+WngQI9H/zlSTGKeAC
AggA
-----END PKCS12-----
يتم عرض استخدام الأداة من خلال الأمثلة التالية التي توضح جميع النتائج المحتملة.
linux> ./key_check.py --passwd test --pkcs12 valid_normal.p12.b64
The RSA key is valid.
linux> ./key_check.py --passwd test --pkcs12 valid_short.p12.b64
The RSA key is valid but is vulnerable to exposure if used in product versions that are affected by the Cisco Private Key Leak Vulnerability (CVE-2022-20866). If this was done, this key should no longer be used.
linux> ./key_check.py --passwd test --pkcs12 inval_not_vulnerable.p12.b64
The RSA key is invalid due to the Cisco RSA Private Key Leak Vulnerability (CVE-2022-20866) but does not have known exposure characteristics. It is recommended that this key be replaced.
linux> ./key_check.py --passwd test --pkcs12 inval_vulnerable.p12.b64
The RSA key is invalid and vulnerable to exposure due to the Cisco RSA Private Key Leak Vulnerability (CVE-2022-20866). This key should no longer be used.
linux> ./key_check.py --passwd test2 --pkcs12 valid_normal.p12.b64
ERROR: Mac verify error: invalid password?
linux> ./key_check.py --passwd test --pkcs12 bad_file.txt
ERROR: 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
ERROR: 140300676220816:error:0607907F:digital envelope routines:EVP_PKEY_get1_RSA:expecting an rsa key:p_lib.c:287: