{"id":"CVE-2026-24850","state":"PUBLISHED","title":"ML-DSA Signature Verification Accepts Signatures with Repeated Hint Indices","description":"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 (`<=` instead of `<`), 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 `<` comparison to `<=`, introducing the vulnerability. Version 0.1.0-rc.4 fixes the issue.","publishedAt":"2026-01-28T00:24:53.146Z","updatedAt":"2026-01-28T14:54:22.827Z","severity":{"score":5.3,"label":"Medium","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N","source":"GitHub_M"},"assigner":"GitHub_M","products":["RustCrypto signatures"],"affected":[{"vendor":"RustCrypto","product":"signatures","versions":[{"version":">= 0.0.4, < 0.1.0-rc.4","status":"affected"}]}],"references":["https://github.com/RustCrypto/signatures/security/advisories/GHSA-5x2r-hc65-25f9","https://github.com/RustCrypto/signatures/issues/894","https://github.com/RustCrypto/signatures/pull/895","https://github.com/RustCrypto/signatures/commit/400961412be2e2ab787942cf30e0a9b66b37a54a","https://github.com/RustCrypto/signatures/commit/b01c3b73dd08d0094e089aa234f78b6089ec1f38","https://csrc.nist.gov/pubs/fips/204/final","https://datatracker.ietf.org/doc/html/rfc9881","https://github.com/C2SP/wycheproof","https://github.com/C2SP/wycheproof/blob/master/testvectors_v1/mldsa_44_verify_test.json","https://github.com/C2SP/wycheproof/blob/master/testvectors_v1/mldsa_65_verify_test.json","https://github.com/C2SP/wycheproof/blob/master/testvectors_v1/mldsa_87_verify_test.json"],"weaknesses":["CWE-347"],"ingestedAt":"2026-10-29T20:11:21.040Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/24xxx/CVE-2026-24850.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-24850","state":"PUBLISHED","datePublished":"2026-01-28T00:24:53.146Z","dateUpdated":"2026-01-28T14:54:22.827Z","assignerShortName":"GitHub_M","assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateReserved":"2026-01-27T14:51:03.060Z"},"containers":{"cna":{"title":"ML-DSA Signature Verification Accepts Signatures with Repeated Hint Indices","descriptions":[{"lang":"en","value":"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 (`<=` instead of `<`), 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 `<` comparison to `<=`, introducing the vulnerability. Version 0.1.0-rc.4 fixes the issue."}],"affected":[{"vendor":"RustCrypto","product":"signatures","versions":[{"version":">= 0.0.4, < 0.1.0-rc.4","status":"affected"}]}],"references":[{"url":"https://github.com/RustCrypto/signatures/security/advisories/GHSA-5x2r-hc65-25f9","name":"https://github.com/RustCrypto/signatures/security/advisories/GHSA-5x2r-hc65-25f9","tags":["x_refsource_CONFIRM"]},{"url":"https://github.com/RustCrypto/signatures/issues/894","name":"https://github.com/RustCrypto/signatures/issues/894","tags":["x_refsource_MISC"]},{"url":"https://github.com/RustCrypto/signatures/pull/895","name":"https://github.com/RustCrypto/signatures/pull/895","tags":["x_refsource_MISC"]},{"url":"https://github.com/RustCrypto/signatures/commit/400961412be2e2ab787942cf30e0a9b66b37a54a","name":"https://github.com/RustCrypto/signatures/commit/400961412be2e2ab787942cf30e0a9b66b37a54a","tags":["x_refsource_MISC"]},{"url":"https://github.com/RustCrypto/signatures/commit/b01c3b73dd08d0094e089aa234f78b6089ec1f38","name":"https://github.com/RustCrypto/signatures/commit/b01c3b73dd08d0094e089aa234f78b6089ec1f38","tags":["x_refsource_MISC"]},{"url":"https://csrc.nist.gov/pubs/fips/204/final","name":"https://csrc.nist.gov/pubs/fips/204/final","tags":["x_refsource_MISC"]},{"url":"https://datatracker.ietf.org/doc/html/rfc9881","name":"https://datatracker.ietf.org/doc/html/rfc9881","tags":["x_refsource_MISC"]},{"url":"https://github.com/C2SP/wycheproof","name":"https://github.com/C2SP/wycheproof","tags":["x_refsource_MISC"]},{"url":"https://github.com/C2SP/wycheproof/blob/master/testvectors_v1/mldsa_44_verify_test.json","name":"https://github.com/C2SP/wycheproof/blob/master/testvectors_v1/mldsa_44_verify_test.json","tags":["x_refsource_MISC"]},{"url":"https://github.com/C2SP/wycheproof/blob/master/testvectors_v1/mldsa_65_verify_test.json","name":"https://github.com/C2SP/wycheproof/blob/master/testvectors_v1/mldsa_65_verify_test.json","tags":["x_refsource_MISC"]},{"url":"https://github.com/C2SP/wycheproof/blob/master/testvectors_v1/mldsa_87_verify_test.json","name":"https://github.com/C2SP/wycheproof/blob/master/testvectors_v1/mldsa_87_verify_test.json","tags":["x_refsource_MISC"]}],"metrics":[{"cvssV3_1":{"attackComplexity":"LOW","attackVector":"NETWORK","availabilityImpact":"NONE","baseScore":5.3,"baseSeverity":"MEDIUM","confidentialityImpact":"NONE","integrityImpact":"LOW","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N","version":"3.1"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-347","lang":"en","description":"CWE-347: Improper Verification of Cryptographic Signature","type":"CWE"}]}],"providerMetadata":{"shortName":"GitHub_M","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateUpdated":"2026-01-28T00:24:53.146Z"},"source":{"advisory":"GHSA-5x2r-hc65-25f9","discovery":"UNKNOWN"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-01-28T14:53:25.394412Z","id":"CVE-2026-24850","options":[{"Exploitation":"poc"},{"Automatable":"yes"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-01-28T14:54:22.827Z"}}]}}}