
CVE-2022-20866用RSAキーチェッカー
Cisco Adaptive Security Appliance(ASA)ソフトウェアおよび Firepower Threat Defense(FTD)ソフトウェアを実行するデバイスにおける RSA 鍵の処理の脆弱性により、認証されていないリモート攻撃者が RSA 秘密鍵を取得できる可能性があります。この脆弱性は、ハードウェアベースの暗号化を実行するハードウェアプラットフォームのメモリに RSA 鍵が保存される際の論理エラーが原因です。攻撃者は、対象デバイスに対して Lenstra サイドチャネル攻撃を使用することで、この脆弱性を悪用する可能性があります。悪用に成功すると、攻撃者は 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 秘密鍵漏洩脆弱性(CVE-2022-20866)」の影響を受けやすいかどうかを分析することです。
key_check.py はコミュニティサポートのツールであり、Linux シェル環境で実行され、以下の依存関係があります。
このツールはプラットフォームに依存しないように設計されており、以下のプラットフォーム構成でテストされています。
構文:
key_check.py [-h] --pkcs12 PKCS12 [--passwd PASSWD]
パラメータ:
-h
ヘルプ情報を表示します
--pkcs12
分析する鍵を含むファイル名(Base64 エンコードされた PKCS12 形式)。このファイルは、後述の手順を使用して ASA または FTD デバイスからエクスポートされます。
--passwd
PKCS12 の復号に必要なパスワード。これは、鍵のエクスポート時に ASA または FTD の CLI で入力した値と同じです。このオプションを指定しない場合、ツールはパスワードの入力を求めます。
このセクションでは、ASA デバイスから 1 つの鍵をエクスポートする方法について説明します。分析する鍵ごとにこの手順を実行する必要があります。シナリオは 2 つあります。
1)キーペアが ASA トラストポイント証明書で使用されている場合
トラストポイントを使用すると、認証局(CA)と証明書を管理および追跡できます。トラストポイントは、CA またはアイデンティティペアを表します。トラストポイントには、CA の ID、CA 固有の設定パラメータ、および 1 つの登録済み ID 証明書との関連付けが含まれます。キーペアが ASA に設定されている証明書で使用されている場合、次のコマンドを入力してキーペアをエクスポートできます。
# asa(config)# crypto ca export <tpname> pkcs12 test
ここで、 はトラストポイントの名前です。
2)キーペアが ASA トラストポイント証明書で使用されていない場合
鍵が 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
上記の 2 つの手順(1、2)により、パスワード "test" で Base64 エンコードされた p12 がコンソールに出力されます。出力行をすべてテキストファイルに保存します。このファイルがツールへの入力として使用されます。
FTD デバイスでは、手順に FMC を使用する必要があります。FTD では鍵を個別に管理できないため、すべての鍵には関連付けられた証明書が必要です。
以下は、エクスポートされた PKCS12 ファイルの内容がどのようになるかを視覚的に確認するためのものです。
-----BEGIN PKCS12-----
MIIJvwIBAzCCCXUGCSqGSIb3DQEHAaCCCWYEggliMIIJXjCCA78GCSqGSIb3DQEH
BqCCA7AwggOsAgEAMIIDpQYJKoZIhvcNAQcBMBwGCiqGSIb3DQEMAQMwDgQIwsRZ
<行は省略>
geRPZxLUjt8nsc0bbrmEkXJ/27EbUm43UkioncY7JJwwQTAxMA0GCWCGSAFlAwQC
AQUABCAMZ7IR6nXHNbZ5zdtVAQX90VZyu2pvnJpiYgWWEf+WngQI9H/zlSTGKeAC
AggA
-----END PKCS12-----
ツールの使用方法は、以下の例で示します。これらはすべての可能な結果を示しています。
1)通常の有効な鍵
linux> ./key_check.py --passwd test --pkcs12 valid_normal.p12.b64
RSA 鍵は有効です。
2)露出特性のある有効な鍵
linux> ./key_check.py --passwd test --pkcs12 valid_short.p12.b64
RSA 鍵は有効ですが、Cisco 秘密鍵漏洩脆弱性(CVE-2022-20866)の影響を受ける製品バージョンで使用された場合、露出に対して脆弱です。使用された場合、この鍵は使用しないでください。
3)脆弱性特性のない無効な鍵
linux> ./key_check.py --passwd test --pkcs12 inval_not_vulnerable.p12.b64
RSA 鍵は Cisco RSA 秘密鍵漏洩脆弱性(CVE-2022-20866)により無効ですが、既知の露出特性はありません。この鍵を交換することを推奨します。
4)脆弱な無効鍵
linux> ./key_check.py --passwd test --pkcs12 inval_vulnerable.p12.b64
RSA 鍵は無効であり、Cisco RSA 秘密鍵漏洩脆弱性(CVE-2022-20866)により露出に対して脆弱です。この鍵は使用しないでください。
5)無効なパスワード
linux> ./key_check.py --passwd test2 --pkcs12 valid_normal.p12.b64
ERROR: Mac verify error: invalid password?
6)無効な入力ファイル
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:
7)有効だが非 RSA 鍵
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: