Pradinė publikavimo data: 2025 m. lapkričio 21 d.
KB ID: 5073121
Įžanga
2025 m. spalio 14 d. "Windows" naujinimai, skirti CVE-2024-30098 , atskleidė programų problemas, kai kodas netinkamai identifikuoja, kuris teikėjas tvarko sertifikatų, išplatintų iš intelektualiosios kortelės į sertifikatų saugyklą, raktą. Dėl šio neteisingo tapatybės nustatymo tam tikruose scenarijuose gali nepavykti šifravimo operacijos. Šiame dokumente pateikiama rekomendacijų programų kūrėjams, kaip aptikti tinkamą apdorojimo programą ir išspręsti šias problemas.
Suvestinė
Kai sertifikatai platinami iš intelektualiosios kortelės į "Windows" sertifikatų saugyklą, platinimo procesas gali naudoti vieną iš šių teikėjų:
-
Senstelėjęs šifravimo paslaugų teikėjas (CSP), kuris priklauso nuo senstelėjusios šifravimo programų programavimo sąsajos (CAPI)
-
Pagrindinės saugyklos teikėjas (KSP), kuris priklauso nuo kriptografijos API: naujos kartos (CNG). Tai buvo modernus pakeitimas pristatytas "Windows Vista".
Prieš pataisą CVE-2024-30098, platinimo algoritmas naudojo CSP RSA pagrįstiems sertifikatams ir KSP visiems kitiems. Šis metodas buvo nesaugus, nes CAPI nepalaiko šiuolaikinių šifravimo algoritmų, apribojančių saugos galimybes.
2025 m. spalio 14 d. saugos naujinimai pašalino šį specialų apdorojimą ir dabar KSP naudojamas visiems sertifikatams.
Api rinkinio nustatymas naudoti
Programos, kurios naudoja RSA raktus, kuriuos valdo CSP, gali nepavykti, kai raktą valdo KSP. Kad išspręstumėte šią problemą, programos turi nustatyti, kuris teikėjas valdo raktą ir naudoti atitinkamą API rinkinį (CAPI arba CNG).
Svarbu: Nenaudokite CryptAcquireContextW arba CryptAcquireContextA funkcijų, nes API nebenaudojama. Vietoj to naudokite funkciją CryptAcquireCertificatePrivateKey .
Funkcija CryptAcquireCertificatePrivateKey
Iškviečiant CryptAcquireCertificatePrivateKey , grąžinama HCRYPTPROV_OR_NCRYPT_KEY_HANDLE tipo rankenėlė (phCryptProvOrNCryptKey). Ši rankenėlė gali būti:
-
CSP rankenėlė (HCRYPTPROV): naudokite CryptoAPI funkcijas, pvz., CryptSignHash.
-
CNG rankenėlė (NCRYPT_KEY_HANDLE): naudokite CNG funkcijas, pvz., NCryptSignHash.
Pastaba: Iškviečidami CryptAcquireCertificatePrivateKey, būtinai į parametrą dwFlags įtraukite CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG .
Norėdami nustatyti rankenėlės tipą, patikrinkite pdwKeySpec reikšmę:
|
pdwKeySpec reikšmė |
Crypto API, kad galėtumėte naudoti |
|
AT_KEYEXCHANGE arba AT_SIGNATURE |
CAPI |
|
CERT_NCRYPT_KEY_SPEC |
CNG |
Sprendimo būdas
Laikiną darbą gali naudoti klientai, kuriems turi įtakos šio pakeitimo vykdymas. Galimas laikinas registro raktas, kad būtų galima perjungti veikimą iš vykdymo į audito režimą.
Svarbu: Šio registro rakto palaikymas bus pašalintas 2026 m. balandžio mėn. naujinimuose.
|
Registro kelias |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais |
|
Tipas |
REG_DWORD |
|
Reikšmės pavadinimas |
DisableCapiOverrideForRSA |
|
Reikšmės duomenys |
|
Nuorodos
Funkcija CryptAcquireCertificatePrivateKey (wincrypt.h)
CVE-2024-30098 | "Windows" šifravimo tarnybų saugos funkcijos apėjimo pažeidžiamumas
.