Data de publicação original: 21 de novembro de 2025
ID do KB: 5073121
|
Data da alteração |
Alterar descrição |
|
12 de fevereiro de 2026 |
|
|
11 de dezembro de 2025 |
|
Introdução
As atualizações do Windows de 14 de outubro de 2025 abordando o CVE-2024-30098 revelaram problemas em aplicativos em que o código não identifica corretamente qual provedor está gerenciando a chave para certificados propagados de uma card inteligente para o repositório de certificados. Essa identificação incorreta pode fazer com que as operações criptográficas falhem em determinados cenários. Este documento fornece diretrizes para desenvolvedores de aplicativos sobre como detectar o manipulador correto e resolve esses problemas.
Resumo
Quando os certificados são propagados de um card inteligente para o repositório de certificados do Windows, o processo de propagação pode usar um dos seguintes provedores:
-
CSP (Provedor de Serviços Criptográficos Herdados), que depende da CAPI (Interface de Programação de Aplicativo Criptográfico) herdada
-
Provedor de Armazenamento de Chaves (KSP), que depende da API de Criptografia: CNG (Próxima Geração). Esta foi a substituição moderna introduzida no Windows Vista.
Antes da correção para CVE-2024-30098, o algoritmo de propagação usou CSP para certificados baseados em RSA e KSP para todas as outras pessoas. Essa abordagem era insegura porque o CAPI não dá suporte a algoritmos criptográficos modernos, limitando as funcionalidades de segurança.
As atualizações de segurança de 14 de outubro de 2025 removeram esse tratamento especial e agora o KSP é usado para todos os certificados.
Determinar o conjunto de API a ser usado
Aplicativos que dependem de chaves RSA que estão sendo gerenciadas pelo CSP podem falhar quando a chave é gerenciada pelo KSP. Para resolve isso, os aplicativos devem detectar qual provedor gerencia a chave e usar o conjunto de API correspondente (CAPI ou CNG).
Importante: Não use as funções CryptAcquireContextW ou CryptAcquireContextA , pois a API é preterida. Em vez disso, use a função CryptAcquireCertificatePrivateKey .
Função CryptAcquireCertificatePrivateKey
Chamar CryptAcquireCertificatePrivateKey retorna um identificador (phCryptProvOrNCryptKey) do tipo HCRYPTPROV_OR_NCRYPT_KEY_HANDLE. Esse identificador pode ser:
-
Identificador CSP (HCRYPTPROV): use funções CryptoAPI como CryptSignHash.
-
Identificador de CNG (NCRYPT_KEY_HANDLE): use funções CNG como NCryptSignHash.
Observação: Ao chamar CryptAcquireCertificatePrivateKey, inclua o CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG no parâmetro dwFlags.
Para determinar o tipo de identificador, marcar o valor pdwKeySpec:
|
valor pdwKeySpec |
API de criptografia a ser usada |
|
AT_KEYEXCHANGE ou AT_SIGNATURE |
CAPI |
|
CERT_NCRYPT_KEY_SPEC |
CNG |
Solução alternativa
Um trabalho temporário está disponível para clientes afetados pela aplicação dessa alteração. Uma chave temporária do registro está disponível para alternar o comportamento do modo Enforcement para Audit .
Importante: O suporte para essa chave de registro será removido nas atualizações de fevereiro de 2027.
|
Caminho do Registro |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais |
|
Tipo |
REG_DWORD |
|
Nome do valor |
DisableCapiOverrideForRSA |
|
Dados do valor |
1 = habilitar a correção de segurança (modo de execução) 0 ou chave removida = desabilitar a correção de segurança e mudar para o modo de auditoria |
Referências
Armazenamento e Recuperação de Chaves
Função CryptAcquireCertificatePrivateKey (wincrypt.h)
.