Вихідна дата публікації: 21 листопада 2025 р.
Ідентифікатор KB: 5073121
Вступ
Оновлення Windows від 14 жовтня 2025 року, що вирішують CVE-2024-30098 , виявили проблеми в програмах, де код неправильно визначає, який постачальник керує ключем сертифікатів, що поширюються зі смарт-картки в сховище сертифікатів. Це неправильне визначення може призвести до помилки криптографічних операцій у певних сценаріях. У цьому документі наведено вказівки для розробників програм щодо виявлення правильного обробника та вирішення цих проблем.
Зведення
Коли сертифікати поширюються зі смарт-картки в сховище сертифікатів Windows, під час розповсюдження може використовуватися один із таких постачальників:
-
Застарілий постачальник криптографічних служб (CSP), який використовує застарілий криптографічний програмний інтерфейс (CAPI)
-
Постачальник сховища ключів (KSP), який використовує API Cryptography: нове покоління (CNG). Це була сучасна заміна, введена у Windows Vista.
До виправлення для CVE-2024-30098 алгоритм розповсюдження використовував CSP для сертифікатів на основі RSA та KSP для всіх інших. Цей підхід був незахищеним, оскільки CAPI не підтримує сучасні криптографічні алгоритми, обмежуючи можливості безпеки.
Оновлення системи безпеки від 14 жовтня 2025 року видалили цю спеціальну обробку, і тепер KSP використовується для всіх сертифікатів.
Визначення набору API для використання
Програми, які використовують ключі RSA, якими керує постачальник хмарних рішень, можуть не вимикатися, якщо ключем керує KSP. Щоб вирішити цю проблему, програми повинні визначити, який постачальник керує ключем, і використовувати відповідний набір API (CAPI або CNG).
Увага!: Не використовуйте функції CryptAcquireContextW або CryptAcquireContextA , оскільки API не підтримується. Натомість використовуйте функцію CryptAcquireCertificatePrivateKey .
Функція CryptAcquireCertificatePrivateKey
Функція CryptAcquireCertificatePrivateKey повертає маркер (phCryptProvOrNCryptKey) типу HCRYPTPROV_OR_NCRYPT_KEY_HANDLE. Це може бути такий маркер:
-
Дескриптор CSP (HCRYPTPROV): використовуйте функції CryptoAPI, як-от CryptSignHash.
-
Маркер CNG (NCRYPT_KEY_HANDLE): використовуйте функції CNG, як-от NCryptSignHash.
Примітка.: Під час виклику CryptAcquireCertificatePrivateKey обов'язково включіть CRYPT_ACQUIRE_PREFER_NCRYPT_KEY_FLAG до параметра dwFlags.
Щоб визначити тип маркера, перевірте значення pdwKeySpec :
|
значення pdwKeySpec |
Crypto API для використання |
|
AT_KEYEXCHANGE або AT_SIGNATURE |
CAPI |
|
CERT_NCRYPT_KEY_SPEC |
CNG |
Спосіб вирішення
Тимчасова робота доступна для клієнтів, на які впливає застосування цієї зміни. Доступний тимчасовий розділ реєстру, який дає змогу переключити поведінку з примусового застосування в режим перевірки .
Увага! Підтримку цього розділу реєстру буде видалено в оновленнях за квітень 2026 р.
|
Шлях до реєстру |
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\Calais |
|
Type (Тип) |
REG_DWORD |
|
Ім'я значення |
ВимкнутиCapiOverrideForRSA |
|
Дані про значення |
|
Посилання
Сховище ключів і отримання ключів
Функція CryptAcquireCertificatePrivateKey (wincrypt.h)
CvE-2024-30098 | Уразливість обходу функції безпеки криптографічних служб Windows
.