{"id":"CVE-2026-24850","summary":"ML-DSA Signature Verification Accepts Signatures with Repeated Hint Indices","details":"The ML-DSA crate is a Rust implementation of the Module-Lattice-Based Digital Signature Standard (ML-DSA). Starting in version 0.0.4 and prior to version 0.1.0-rc.4, the ML-DSA signature verification implementation in the RustCrypto `ml-dsa` crate incorrectly accepts signatures with repeated (duplicate) hint indices. According to the ML-DSA specification (FIPS 204 / RFC 9881), hint indices within each polynomial must be **strictly increasing**. The current implementation uses a non-strict monotonic check (`\u003c=` instead of `\u003c`), allowing duplicate indices. This is a regression bug. The original implementation was correct, but a commit in version 0.0.4 inadvertently changed the strict `\u003c` comparison to `\u003c=`, introducing the vulnerability. Version 0.1.0-rc.4 fixes the issue.","aliases":["GHSA-5x2r-hc65-25f9"],"modified":"2026-08-12T03:51:37.407839095Z","published":"2026-01-28T00:24:53.146Z","database_specific":{"cwe_ids":["CWE-347"],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/24xxx/CVE-2026-24850.json","cna_assigner":"GitHub_M"},"references":[{"type":"WEB","url":"https://csrc.nist.gov/pubs/fips/204/final"},{"type":"WEB","url":"https://datatracker.ietf.org/doc/html/rfc9881"},{"type":"WEB","url":"https://github.com/C2SP/wycheproof/blob/master/testvectors_v1/mldsa_44_verify_test.json"},{"type":"WEB","url":"https://github.com/C2SP/wycheproof/blob/master/testvectors_v1/mldsa_65_verify_test.json"},{"type":"WEB","url":"https://github.com/C2SP/wycheproof/blob/master/testvectors_v1/mldsa_87_verify_test.json"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/24xxx/CVE-2026-24850.json"},{"type":"ADVISORY","url":"https://github.com/RustCrypto/signatures/security/advisories/GHSA-5x2r-hc65-25f9"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-24850"},{"type":"REPORT","url":"https://github.com/RustCrypto/signatures/issues/894"},{"type":"FIX","url":"https://github.com/RustCrypto/signatures/commit/400961412be2e2ab787942cf30e0a9b66b37a54a"},{"type":"FIX","url":"https://github.com/RustCrypto/signatures/commit/b01c3b73dd08d0094e089aa234f78b6089ec1f38"},{"type":"FIX","url":"https://github.com/RustCrypto/signatures/pull/895"},{"type":"PACKAGE","url":"https://github.com/C2SP/wycheproof"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/rustcrypto/signatures","events":[{"introduced":"ea7a000fa4ddac2ddc3eedca2666ac1959736712"},{"fixed":"400961412be2e2ab787942cf30e0a9b66b37a54a"},{"fixed":"b01c3b73dd08d0094e089aa234f78b6089ec1f38"}],"database_specific":{"source":["AFFECTED_FIELD","REFERENCES"],"extracted_events":[{"introduced":"0.0.4"},{"fixed":"0.1.0-rc.4"}]}}],"versions":["dsa/v0.7.0-rc.11","ecdsa/v0.17.0-rc.14","dsa-v0.7.0-rc.10","ecdsa/v0.17.0-rc.13","dsa/v0.7.0-rc.9","ml-dsa/v0.1.0-rc.3","ecdsa/v0.17.0-rc.12","slh-dsa/v0.2.0-rc.2","ecdsa/v0.17.0-rc.11","dsa/v0.7.0-rc.8","ecdsa/v0.17.0-rc.10","ecdsa/v0.17.0-rc.9","slh-dsa/v0.2.0-rc.1","dsa/v0.7.0-rc.7","ml-dsa/v0.1.0-rc.2","ed448/v0.5.0-rc.2","ed25519/v3.0.0-rc.2","rfc6979/v0.5.0-rc.3","ml-dsa/v0.1.0-rc.1","rfc6979/v0.5.0-rc.2","ecdsa/v0.17.0-rc.8","slh-dsa/v0.2.0-rc.0","ml-dsa/v0.1.0-rc.0","lms-signature/v0.1.0-rc.0","ed448/v0.5.0-rc.1","ed25519/v3.0.0-rc.1","ecdsa/v0.17.0-rc.7","dsa/v0.7.0-rc.6","ed448/0.5.0-rc.0","ed25519/v3.0.0-rc.0","rfc6979/v0.5.0-rc.1","ecdsa/v0.17.0-rc.6","dsa/v0.7.0-rc.5","dsa/v0.7.0-rc.4","ecdsa/v0.17.0-rc.5","dsa/v0.7.0-rc.3","ecdsa/v0.17.0-rc.4","dsa/v0.7.0-rc.2","dsa/v0.7.0-rc.1","ecdsa/v0.17.0-rc.3","ecdsa/v0.17.0-rc.2","ecdsa/v0.17.0-rc.1","ed25519/v3.0.0-pre.0","dsa/v0.7.0-rc.0","ecdsa/v0.17.0-rc.0","rfc6979/v0.5.0-rc.0","slh-dsa/v0.0.3","ml-dsa/v0.0.4"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-24850.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N"}]}