wolfSSL's AVX2-optimized ML-KEM implementation (mlkemcmpavx2) 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.
{
"sources": [
{
"html_url": "https://nvd.nist.gov/vuln/detail/CVE-2026-10097",
"modified": "2026-06-26T17:16:31.693Z",
"published": "2026-06-25T20:17:09.160Z",
"url": "https://services.nvd.nist.gov/rest/json/cves/2.0?cveId=CVE-2026-10097",
"imported": "2026-07-14T21:22:49.547Z",
"id": "CVE-2026-10097",
"database_specific": {
"status": "Modified"
}
},
{
"url": "https://api.github.com/advisories/GHSA-hcgc-hfp6-58v4",
"html_url": "https://github.com/advisories/GHSA-hcgc-hfp6-58v4",
"modified": "2026-06-26T18:34:51Z",
"imported": "2026-07-14T21:22:58.060Z",
"published": "2026-06-25T21:31:30Z",
"id": "GHSA-hcgc-hfp6-58v4"
},
{
"url": "https://euvdservices.enisa.europa.eu/api/enisaid?id=EUVD-2026-39553",
"published": "2026-06-25T19:59:30Z",
"html_url": "https://euvd.enisa.europa.eu/vulnerability/EUVD-2026-39553",
"imported": "2026-07-14T21:22:51.069Z",
"id": "EUVD-2026-39553",
"modified": "2026-06-26T16:35:41Z"
}
],
"license": "CC-BY-4.0"
}