Data de publicação original: 21 de novembro de 2025
ID da BDC: 5073121
|
Data da alteração |
Alterar descrição |
|
11 de dezembro de 2025 |
|
Introdução
As atualizações de 14 de outubro de 2025 do Windows que abordam o CVE-2024-30098 revelaram problemas em aplicações em que o código não identifica corretamente que fornecedor está a gerir a chave para certificados propagados de um card inteligente para o arquivo de certificados. Esta identificação incorreta pode fazer com que as operações criptográficas falhem em determinados cenários. Este documento fornece orientações para programadores de aplicações sobre como detetar o processador correto e resolve estes problemas.
Resumo
Quando os certificados são propagados de um card inteligente para o arquivo de certificados do Windows, o processo de propagação pode utilizar qualquer um dos seguintes fornecedores:
-
Fornecedor de Serviços Criptográficos Legados (CSP), que se baseia na Interface de Programação de Aplicações Criptográficas (CAPI) legada
-
Fornecedor de Armazenamento de Chaves (KSP), que depende da API de Criptografia: Próxima Geração (CNG). Esta foi a substituição moderna introduzida no Windows Vista.
Antes da correção para CVE-2024-30098, o algoritmo de propagação utilizava CSP para certificados baseados em RSA e KSP para todos os outros. Esta abordagem era insegura porque o CAPI não suporta algoritmos criptográficos modernos, limitando as capacidades de segurança.
As atualizações de segurança de 14 de outubro de 2025 removeram este processamento especial e agora o KSP é utilizado para todos os certificados.
Determinar o conjunto de API a utilizar
As aplicações que dependem de chaves RSA que estão a ser geridas pelo CSP podem falhar quando a chave é gerida pelo KSP. Para resolve isto, as aplicações têm de detetar que fornecedor gere a chave e utilizar o conjunto de API correspondente (CAPI ou CNG).
Importante: Não utilize as funções CryptAcquireContextW ou CryptAcquireContextA , uma vez que a API foi preterida. Em vez disso, utilize a função CryptAcquireCertificatePrivateKey .
Função CryptAcquireCertificatePrivateKey
Chamar CryptAcquireCertificatePrivateKey devolve uma alça (phCryptProvOrNCryptKey) do tipo HCRYPTPROV_OR_NCRYPT_KEY_HANDLE. Esta alça pode ser:
-
Identificador CSP (HCRYPTPROV): utilize funções CryptoAPI como CryptSignHash.
-
Identificador CNG (NCRYPT_KEY_HANDLE): utilize funções CNG como NCryptSignHash.
Observação: Ao chamar CryptAcquireCertificatePrivateKey, certifique-se de que inclui o CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG no parâmetro dwFlags.
Para determinar o tipo de identificador, marcar o valor pdwKeySpec:
|
valor pdwKeySpec |
API Criptográfica a utilizar |
|
AT_KEYEXCHANGE ou AT_SIGNATURE |
CAPI |
|
CERT_NCRYPT_KEY_SPEC |
CNG |
Solução alternativa
Está disponível uma solução temporária para os clientes afetados pela imposição desta alteração. Está disponível uma chave de registo temporária para mudar o comportamento de Imposição para Modo de auditoria .
Importante: O suporte para esta chave de registo será removido nas atualizações de abril de 2026.
|
Caminho do registo |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais |
|
Tipo |
REG_DWORD |
|
Nome do valor |
DisableCapiOverrideForRSA |
|
Dados do valor |
1 = ativar a correção de segurança (modo de imposição) 0 ou chave removida = desative a correção de segurança e mude para o modo de auditoria |
Referências
Armazenamento e Obtenção de Chaves
Função CryptAcquireCertificatePrivateKey (wincrypt.h)
.