{"id":"CVE-2026-10097","summary":"ML-KEM-1024 x64 AVX2 incomplete cipher text comparison enables IND-CCA2 break and static private-key recovery","details":"wolfSSL's AVX2-optimized ML-KEM implementation (mlkem_cmp_avx2) compares only 1536 of the 1568 ciphertext bytes during the Fujisaki-Okamoto re-encryption check in ML-KEM-1024 decapsulation. Ciphertexts that differ from the expected re-encryption solely in bytes 1536-1567 bypass implicit rejection and are accepted as valid, breaking IND-CCA2 security. An attacker able to submit chosen ciphertexts to a decapsulation oracle that uses a static ML-KEM-1024 key, and to observe whether the genuine shared secret or the implicit-rejection secret was produced, can use this as a plaintext-checking oracle to recover the private key. A proof of concept recovered a full ML-KEM-1024 private key with approximately 98% success using roughly 350 chosen ciphertexts. The flaw is a deterministic logic error and does not rely on timing measurements.","modified":"2026-07-16T03:48:10.379512505Z","published":"2026-06-25T19:59:30.848Z","database_specific":{"cna_assigner":"wolfSSL","cwe_ids":["CWE-697"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/10xxx/CVE-2026-10097.json"},"references":[{"type":"WEB","url":"https://www.wolfssl.com/docs/security-vulnerabilities/"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/10xxx/CVE-2026-10097.json"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-10097"},{"type":"FIX","url":"https://github.com/wolfSSL/wolfssl/pull/10430"},{"type":"PACKAGE","url":"https://github.com/wolfSSL/wolfssl"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/wolfssl/wolfssl","events":[{"introduced":"8970ff4c34034dbb3594943d11f8c9d4c5512bd5"},{"fixed":"ac01707f552c611fbd135cc723b2682b3e7f80f2"}],"database_specific":{"extracted_events":[{"introduced":"5.7.0"},{"last_affected":"5.9.1"},{"fixed":"5.9.2"}],"source":["AFFECTED_FIELD","CPE_RANGE"],"cpe":"cpe:2.3:a:wolfssl:wolfssl:*:*:*:*:*:*:*:*"}}],"versions":["v5.9.1-stable","v5.9.0-stable","v5.8.4-stable","wolfEntropy2d","v5.8.2-stable","wolfEntropy1","v5.8.0-stable","v5.7.6-stable","v5.7.4-stable","v5.2.1","v5.7.2-stable","v5.7.0-stable"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-10097.json"}}],"schema_version":"1.7.5","severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N"}]}