วันที่เผยแพร่ต้นฉบับ: วันที่ 21 พฤศจิกายน 2568
KB ID: 5073121
บทนำ
การอัปเดต Windows ที่แก้ไข CVE-2024-30098 เมื่อวันที่ 14 ตุลาคม 2025 พบปัญหาในแอปพลิเคชันที่รหัสไม่ได้ระบุอย่างถูกต้องว่าผู้ให้บริการรายใดกําลังจัดการคีย์สําหรับใบรับรองที่เผยแพร่จากสมาร์ทการ์ดไปยังที่เก็บใบรับรอง การไม่เข้าใจผิดนี้อาจทําให้การดําเนินการเข้ารหัสลับล้มเหลวในบางสถานการณ์ เอกสารนี้จะให้คําแนะนําสําหรับนักพัฒนาแอปพลิเคชันเกี่ยวกับวิธีการตรวจหาตัวจัดการที่ถูกต้องและแก้ไขปัญหาเหล่านี้
บทสรุป
เมื่อใบรับรองถูกเผยแพร่จากสมาร์ทการ์ดไปยังที่เก็บใบรับรอง Windows กระบวนการเผยแพร่สามารถใช้ผู้ให้บริการอย่างใดอย่างหนึ่งต่อไปนี้:
-
Legacy Cryptographic Service Provider (CSP) ซึ่งอาศัยส่วนติดต่อการเขียนแอปพลิเคชัน Cryptographic ดั้งเดิม (CAPI)
-
Key Storage Provider (KSP) ซึ่งอาศัย Cryptography API: Next Generation (CNG) นี่เป็นการแทนที่แบบใหม่ที่เริ่มนํามาใช้ใน Windows Vista
ก่อนที่จะแก้ไข CVE-2024-30098 อัลกอริทึมการเผยแพร่ที่ใช้ CSP สําหรับใบรับรอง RSA และ KSP สําหรับใบรับรองอื่นๆ ทั้งหมด วิธีนี้ไม่ปลอดภัยเนื่องจาก CAPI ไม่สนับสนุนอัลกอริทึมการเข้ารหัสลับที่ทันสมัย ซึ่งจํากัดความสามารถในการรักษาความปลอดภัย
การอัปเดตด้านความปลอดภัยของวันที่ 14 ตุลาคม 2025 ได้ลบการจัดการพิเศษนี้ออก และตอนนี้ KSP ใช้สําหรับใบรับรองทั้งหมด
กําหนดชุด API ที่จะใช้
แอปพลิเคชันที่ใช้คีย์ RSA ที่จัดการโดย CSP อาจล้มเหลวเมื่อคีย์ได้รับการจัดการโดย 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 |
|
ชนิด |
REG_DWORD |
|
ชื่อค่า |
DisableCapiOverrideForRSA |
|
ข้อมูลค่า |
|
การอ้างอิง
ฟังก์ชัน CryptAcquireCertificatePrivateKey (wincrypt.h)
CVE-2024-30098 | CVE คุณลักษณะความปลอดภัยของ Windows Cryptographic Services บายพาสช่องโหว่
.