元の発行日: 2025 年 11 月 21 日
KB ID: 5073121
概要
2025 年 10 月 14 日、CVE-2024-30098 に対処する Windows 更新プログラムにより、スマート カードから証明書ストアに伝達される証明書のキーを管理しているプロバイダーがコードで正しく識別されないアプリケーションの問題が明らかになっています。 この誤識別により、特定のシナリオで暗号化操作が失敗する可能性があります。 このドキュメントでは、適切なハンドラーを検出し、これらの問題を解決する方法に関するアプリケーション開発者向けのガイダンスを提供します。
概要
スマート カードから Windows 証明書ストアに証明書が伝達される場合、伝達プロセスでは次のいずれかのプロバイダーを使用できます。
-
従来の暗号化アプリケーション プログラミング インターフェイス (CAPI) に依存するレガシ暗号化サービス プロバイダー (CSP)
-
キー ストレージ プロバイダー (KSP)。これは、暗号化 API: 次世代 (CNG) に依存しています。 これは、Windows Vista で導入された最新の代替品でした。
CVE-2024-30098 の修正前は、伝達アルゴリズムで RSA ベースの証明書に CSP、その他すべてに KSP が使用されていました。 CAPI では最新の暗号化アルゴリズムがサポートされていないため、セキュリティ機能が制限されているため、この方法は安全ではありません。
2025 年 10 月 14 日、セキュリティ更新プログラムによってこの特別な処理が削除され、すべての証明書に KSP が使用されるようになりました。
使用する API セットを決定する
キーが KSP によって管理されている場合、CSP によって管理されている RSA キーに依存するアプリケーションが失敗する可能性があります。 これを解決するには、アプリケーションでキーを管理するプロバイダーを検出し、対応する API セット (CAPI または CNG) を使用する必要があります。
重要: API は非推奨であるため、 CryptAcquireContextW 関数または CryptAcquireContextA 関数は使用しないでください。 代わりに、 CryptAcquireCertificatePrivateKey 関数を 使用します。
CryptAcquireCertificatePrivateKey 関数
CryptAcquireCertificatePrivateKey を呼び出すと、HCRYPTPROV_OR_NCRYPT_KEY_HANDLE型のハンドル (phCryptProvOrNCryptKey) が返されます。 このハンドルは次のとおりです。
-
CSP ハンドル (HCRYPTPROV): CryptSignHash などの CryptoAPI 関数を使用します。
-
CNG ハンドル (NCRYPT_KEY_HANDLE): NCryptSignHash などの CNG 関数を使用します。
注: CryptAcquireCertificatePrivateKey を呼び出す場合は、dwFlags パラメーターに CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG を含める必要があります。
ハンドルの種類を確認するには、pdwKeySpec 値をチェックします。
|
pdwKeySpec 値 |
使用する Crypto API |
|
AT_KEYEXCHANGEまたはAT_SIGNATURE |
CAPI |
|
CERT_NCRYPT_KEY_SPEC |
CNG |
回避策
この変更の適用によって影響を受けるお客様は、一時的な回避策を利用できます。 一時レジストリ キーを使用して、動作を 強制 モードから 監査 モードに切り替えることができます。
重要: このレジストリ キーのサポートは、2026 年 4 月の更新プログラムで削除されます。
|
レジストリ パス |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais |
|
Type |
REG_DWORD |
|
値の名前 |
DisableCapiOverrideForRSA |
|
値のデータ |
|
参考資料
CryptAcquireCertificatePrivateKey 関数 (wincrypt.h)
CVE-2024-30098 |Windows 暗号化サービスのセキュリティ機能バイパスの脆弱性
.