ml-dsa
Activity
- Latest release
- 3mo ago
- Total releases
- 21
- Cadence
- ~17 days
- Last 12 months
- 13
Details
- License
- Apache-2.0 OR MIT
- First release
- Aug 24, 2023
| Version | Released | |
|---|---|---|
0.1.1
unknown
|
0.1.1
unknown
Dependencies (17)
+ 9 more |
|
0.1.0
unknown
|
0.1.0
unknown
Dependencies (17)
+ 9 more |
|
0.1.0-rc.11
unknown
3 CVEs
GHSA-h37v-hp6w-2pp8
Feb 02, 2026
ml-dsa's UseHint function has off by two error when r0 equals zero
Medium
Network
Low
None
None
SummaryThere's a bug in the DetailsThe issue is in
Line 3 uses But the current implementation does this:
The problem is The result is +1 when it should be -1, which is an off by two error mod m. PoCTake MLDSA 44 where γ2 = 95,232 and m = 44. If
But FIPS 204 says:
The function returns 1 when it should return 43. This can happen in real signatures whenever any coefficient of the ImpactThis is a FIPS 204 compliance bug that affects signature verification. When the edge case triggers, valid signatures get rejected. Since MLDSA is supposed to be used for high security post quantum cryptography, having verification randomly fail isn't great. It's also theoretically possible that the mismatch between what signing expects and what verification does could be exploited somehow, though that would need more looking into. The fix is straightforward, just change the condition to explicitly check for positive values:
Fixed in
0.1.0-rc.5
References Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-24850
GHSA-5x2r-hc65-25f9
Jan 28, 2026
ML-DSA Signature Verification Accepts Signatures with Repeated Hint Indices
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
Low
None
Affected Crate: SummaryThe ML-DSA signature verification implementation in the RustCrypto Note: This is a regression bug. The original implementation was correct, but commit Vulnerability DetailsRoot CauseThe vulnerability is located in the
The comparison operator
Regression Analysis
The commit message suggests it was intended to fix issue #894 and make decoding follow the spec, but the change to the Technical ImpactThis vulnerability allows signature malleability - the same logical signature can have multiple valid byte-level encodings. An attacker can take a valid signature and create additional "valid" signatures by duplicating hint indices. Per the ML-DSA specification (FIPS 204, Section 6.2 and Algorithm 26
Affected Security LevelsAll ML-DSA parameter sets are affected:
Proof of ConceptSee the file The PoC uses test vectors from the Wycheproof test suite that specifically test for this invalid encoding:
RemediationUpdate the
Design Intent: ML-DSA is NOT Intended to Allow MalleabilityWhile some cryptographic libraries intentionally permit signature malleability for compatibility or performance reasons, ML-DSA is explicitly designed to prevent it:
Fixed in
0.1.0-rc.4
References
Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-22705
GHSA-hcp2-x6j4-29j7
RUSTSEC-2025-0144
Jan 13, 2026
RustCrypto: Signatures has timing side-channel in ML-DSA decomposition
6.4
/ 10
Medium
Adjacent
High
Low
None
Unchanged
High
High
None
SummaryA timing side-channel was discovered in the Decompose algorithm which is used during ML-DSA signing to generate hints for the signature. DetailsThe analysis was performed using a constant-time analyzer that examines compiled assembly code for instructions with data-dependent timing behavior. The analyzer flags:
The
Original Code:
PoCI do not have an exploit written for this, currently. ImpactThe dividend ( MitigationReplacing division with constant-time Barrett reduction mitigates this risk. Since
See our blog post on how we avoided side-channels in our Go implementation of ML-DSA for more information. Fixed in
0.1.0-rc.3
References
Updated May 05, 2026 · Source: OSV.dev |
0.1.0-rc.11
unknown
Dependencies (17)
+ 9 more |
|
0.1.0-rc.10
unknown
3 CVEs
GHSA-h37v-hp6w-2pp8
Feb 02, 2026
ml-dsa's UseHint function has off by two error when r0 equals zero
Medium
Network
Low
None
None
SummaryThere's a bug in the DetailsThe issue is in
Line 3 uses But the current implementation does this:
The problem is The result is +1 when it should be -1, which is an off by two error mod m. PoCTake MLDSA 44 where γ2 = 95,232 and m = 44. If
But FIPS 204 says:
The function returns 1 when it should return 43. This can happen in real signatures whenever any coefficient of the ImpactThis is a FIPS 204 compliance bug that affects signature verification. When the edge case triggers, valid signatures get rejected. Since MLDSA is supposed to be used for high security post quantum cryptography, having verification randomly fail isn't great. It's also theoretically possible that the mismatch between what signing expects and what verification does could be exploited somehow, though that would need more looking into. The fix is straightforward, just change the condition to explicitly check for positive values:
Fixed in
0.1.0-rc.5
References Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-24850
GHSA-5x2r-hc65-25f9
Jan 28, 2026
ML-DSA Signature Verification Accepts Signatures with Repeated Hint Indices
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
Low
None
Affected Crate: SummaryThe ML-DSA signature verification implementation in the RustCrypto Note: This is a regression bug. The original implementation was correct, but commit Vulnerability DetailsRoot CauseThe vulnerability is located in the
The comparison operator
Regression Analysis
The commit message suggests it was intended to fix issue #894 and make decoding follow the spec, but the change to the Technical ImpactThis vulnerability allows signature malleability - the same logical signature can have multiple valid byte-level encodings. An attacker can take a valid signature and create additional "valid" signatures by duplicating hint indices. Per the ML-DSA specification (FIPS 204, Section 6.2 and Algorithm 26
Affected Security LevelsAll ML-DSA parameter sets are affected:
Proof of ConceptSee the file The PoC uses test vectors from the Wycheproof test suite that specifically test for this invalid encoding:
RemediationUpdate the
Design Intent: ML-DSA is NOT Intended to Allow MalleabilityWhile some cryptographic libraries intentionally permit signature malleability for compatibility or performance reasons, ML-DSA is explicitly designed to prevent it:
Fixed in
0.1.0-rc.4
References
Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-22705
GHSA-hcp2-x6j4-29j7
RUSTSEC-2025-0144
Jan 13, 2026
RustCrypto: Signatures has timing side-channel in ML-DSA decomposition
6.4
/ 10
Medium
Adjacent
High
Low
None
Unchanged
High
High
None
SummaryA timing side-channel was discovered in the Decompose algorithm which is used during ML-DSA signing to generate hints for the signature. DetailsThe analysis was performed using a constant-time analyzer that examines compiled assembly code for instructions with data-dependent timing behavior. The analyzer flags:
The
Original Code:
PoCI do not have an exploit written for this, currently. ImpactThe dividend ( MitigationReplacing division with constant-time Barrett reduction mitigates this risk. Since
See our blog post on how we avoided side-channels in our Go implementation of ML-DSA for more information. Fixed in
0.1.0-rc.3
References
Updated May 05, 2026 · Source: OSV.dev |
0.1.0-rc.10
unknown
Dependencies (17)
+ 9 more |
|
0.1.0-rc.9
unknown
|
0.1.0-rc.9
unknown
Dependencies (17)
+ 9 more |
|
0.1.0-rc.8
unknown
|
0.1.0-rc.8
unknown
Dependencies (17)
+ 9 more |
|
0.1.0-rc.7
unknown
|
0.1.0-rc.7
unknown
Dependencies (16)
+ 8 more |
|
0.1.0-rc.6
unknown
|
0.1.0-rc.6
unknown
Dependencies (16)
+ 8 more |
|
0.1.0-rc.5
unknown
|
0.1.0-rc.5
unknown
Dependencies (16)
+ 8 more |
|
0.1.0-rc.4
unknown
1 CVE
GHSA-h37v-hp6w-2pp8
Feb 02, 2026
ml-dsa's UseHint function has off by two error when r0 equals zero
Medium
Network
Low
None
None
SummaryThere's a bug in the DetailsThe issue is in
Line 3 uses But the current implementation does this:
The problem is The result is +1 when it should be -1, which is an off by two error mod m. PoCTake MLDSA 44 where γ2 = 95,232 and m = 44. If
But FIPS 204 says:
The function returns 1 when it should return 43. This can happen in real signatures whenever any coefficient of the ImpactThis is a FIPS 204 compliance bug that affects signature verification. When the edge case triggers, valid signatures get rejected. Since MLDSA is supposed to be used for high security post quantum cryptography, having verification randomly fail isn't great. It's also theoretically possible that the mismatch between what signing expects and what verification does could be exploited somehow, though that would need more looking into. The fix is straightforward, just change the condition to explicitly check for positive values:
Fixed in
0.1.0-rc.5
References Updated Feb 03, 2026 · Source: OSV.dev |
0.1.0-rc.4
unknown
Dependencies (16)
+ 8 more |
|
0.1.0-rc.3
unknown
2 CVEs
GHSA-h37v-hp6w-2pp8
Feb 02, 2026
ml-dsa's UseHint function has off by two error when r0 equals zero
Medium
Network
Low
None
None
SummaryThere's a bug in the DetailsThe issue is in
Line 3 uses But the current implementation does this:
The problem is The result is +1 when it should be -1, which is an off by two error mod m. PoCTake MLDSA 44 where γ2 = 95,232 and m = 44. If
But FIPS 204 says:
The function returns 1 when it should return 43. This can happen in real signatures whenever any coefficient of the ImpactThis is a FIPS 204 compliance bug that affects signature verification. When the edge case triggers, valid signatures get rejected. Since MLDSA is supposed to be used for high security post quantum cryptography, having verification randomly fail isn't great. It's also theoretically possible that the mismatch between what signing expects and what verification does could be exploited somehow, though that would need more looking into. The fix is straightforward, just change the condition to explicitly check for positive values:
Fixed in
0.1.0-rc.5
References Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-24850
GHSA-5x2r-hc65-25f9
Jan 28, 2026
ML-DSA Signature Verification Accepts Signatures with Repeated Hint Indices
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
Low
None
Affected Crate: SummaryThe ML-DSA signature verification implementation in the RustCrypto Note: This is a regression bug. The original implementation was correct, but commit Vulnerability DetailsRoot CauseThe vulnerability is located in the
The comparison operator
Regression Analysis
The commit message suggests it was intended to fix issue #894 and make decoding follow the spec, but the change to the Technical ImpactThis vulnerability allows signature malleability - the same logical signature can have multiple valid byte-level encodings. An attacker can take a valid signature and create additional "valid" signatures by duplicating hint indices. Per the ML-DSA specification (FIPS 204, Section 6.2 and Algorithm 26
Affected Security LevelsAll ML-DSA parameter sets are affected:
Proof of ConceptSee the file The PoC uses test vectors from the Wycheproof test suite that specifically test for this invalid encoding:
RemediationUpdate the
Design Intent: ML-DSA is NOT Intended to Allow MalleabilityWhile some cryptographic libraries intentionally permit signature malleability for compatibility or performance reasons, ML-DSA is explicitly designed to prevent it:
Fixed in
0.1.0-rc.4
References
Updated Feb 03, 2026 · Source: OSV.dev |
0.1.0-rc.3
unknown
Dependencies (16)
+ 8 more |
|
0.1.0-rc.2
unknown
3 CVEs
GHSA-h37v-hp6w-2pp8
Feb 02, 2026
ml-dsa's UseHint function has off by two error when r0 equals zero
Medium
Network
Low
None
None
SummaryThere's a bug in the DetailsThe issue is in
Line 3 uses But the current implementation does this:
The problem is The result is +1 when it should be -1, which is an off by two error mod m. PoCTake MLDSA 44 where γ2 = 95,232 and m = 44. If
But FIPS 204 says:
The function returns 1 when it should return 43. This can happen in real signatures whenever any coefficient of the ImpactThis is a FIPS 204 compliance bug that affects signature verification. When the edge case triggers, valid signatures get rejected. Since MLDSA is supposed to be used for high security post quantum cryptography, having verification randomly fail isn't great. It's also theoretically possible that the mismatch between what signing expects and what verification does could be exploited somehow, though that would need more looking into. The fix is straightforward, just change the condition to explicitly check for positive values:
Fixed in
0.1.0-rc.5
References Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-24850
GHSA-5x2r-hc65-25f9
Jan 28, 2026
ML-DSA Signature Verification Accepts Signatures with Repeated Hint Indices
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
Low
None
Affected Crate: SummaryThe ML-DSA signature verification implementation in the RustCrypto Note: This is a regression bug. The original implementation was correct, but commit Vulnerability DetailsRoot CauseThe vulnerability is located in the
The comparison operator
Regression Analysis
The commit message suggests it was intended to fix issue #894 and make decoding follow the spec, but the change to the Technical ImpactThis vulnerability allows signature malleability - the same logical signature can have multiple valid byte-level encodings. An attacker can take a valid signature and create additional "valid" signatures by duplicating hint indices. Per the ML-DSA specification (FIPS 204, Section 6.2 and Algorithm 26
Affected Security LevelsAll ML-DSA parameter sets are affected:
Proof of ConceptSee the file The PoC uses test vectors from the Wycheproof test suite that specifically test for this invalid encoding:
RemediationUpdate the
Design Intent: ML-DSA is NOT Intended to Allow MalleabilityWhile some cryptographic libraries intentionally permit signature malleability for compatibility or performance reasons, ML-DSA is explicitly designed to prevent it:
Fixed in
0.1.0-rc.4
References
Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-22705
GHSA-hcp2-x6j4-29j7
RUSTSEC-2025-0144
Jan 13, 2026
RustCrypto: Signatures has timing side-channel in ML-DSA decomposition
6.4
/ 10
Medium
Adjacent
High
Low
None
Unchanged
High
High
None
SummaryA timing side-channel was discovered in the Decompose algorithm which is used during ML-DSA signing to generate hints for the signature. DetailsThe analysis was performed using a constant-time analyzer that examines compiled assembly code for instructions with data-dependent timing behavior. The analyzer flags:
The
Original Code:
PoCI do not have an exploit written for this, currently. ImpactThe dividend ( MitigationReplacing division with constant-time Barrett reduction mitigates this risk. Since
See our blog post on how we avoided side-channels in our Go implementation of ML-DSA for more information. Fixed in
0.1.0-rc.3
References
Updated May 05, 2026 · Source: OSV.dev |
0.1.0-rc.2
unknown
Dependencies (16)
+ 8 more |
|
0.1.0-rc.1
unknown
3 CVEs
GHSA-h37v-hp6w-2pp8
Feb 02, 2026
ml-dsa's UseHint function has off by two error when r0 equals zero
Medium
Network
Low
None
None
SummaryThere's a bug in the DetailsThe issue is in
Line 3 uses But the current implementation does this:
The problem is The result is +1 when it should be -1, which is an off by two error mod m. PoCTake MLDSA 44 where γ2 = 95,232 and m = 44. If
But FIPS 204 says:
The function returns 1 when it should return 43. This can happen in real signatures whenever any coefficient of the ImpactThis is a FIPS 204 compliance bug that affects signature verification. When the edge case triggers, valid signatures get rejected. Since MLDSA is supposed to be used for high security post quantum cryptography, having verification randomly fail isn't great. It's also theoretically possible that the mismatch between what signing expects and what verification does could be exploited somehow, though that would need more looking into. The fix is straightforward, just change the condition to explicitly check for positive values:
Fixed in
0.1.0-rc.5
References Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-24850
GHSA-5x2r-hc65-25f9
Jan 28, 2026
ML-DSA Signature Verification Accepts Signatures with Repeated Hint Indices
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
Low
None
Affected Crate: SummaryThe ML-DSA signature verification implementation in the RustCrypto Note: This is a regression bug. The original implementation was correct, but commit Vulnerability DetailsRoot CauseThe vulnerability is located in the
The comparison operator
Regression Analysis
The commit message suggests it was intended to fix issue #894 and make decoding follow the spec, but the change to the Technical ImpactThis vulnerability allows signature malleability - the same logical signature can have multiple valid byte-level encodings. An attacker can take a valid signature and create additional "valid" signatures by duplicating hint indices. Per the ML-DSA specification (FIPS 204, Section 6.2 and Algorithm 26
Affected Security LevelsAll ML-DSA parameter sets are affected:
Proof of ConceptSee the file The PoC uses test vectors from the Wycheproof test suite that specifically test for this invalid encoding:
RemediationUpdate the
Design Intent: ML-DSA is NOT Intended to Allow MalleabilityWhile some cryptographic libraries intentionally permit signature malleability for compatibility or performance reasons, ML-DSA is explicitly designed to prevent it:
Fixed in
0.1.0-rc.4
References
Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-22705
GHSA-hcp2-x6j4-29j7
RUSTSEC-2025-0144
Jan 13, 2026
RustCrypto: Signatures has timing side-channel in ML-DSA decomposition
6.4
/ 10
Medium
Adjacent
High
Low
None
Unchanged
High
High
None
SummaryA timing side-channel was discovered in the Decompose algorithm which is used during ML-DSA signing to generate hints for the signature. DetailsThe analysis was performed using a constant-time analyzer that examines compiled assembly code for instructions with data-dependent timing behavior. The analyzer flags:
The
Original Code:
PoCI do not have an exploit written for this, currently. ImpactThe dividend ( MitigationReplacing division with constant-time Barrett reduction mitigates this risk. Since
See our blog post on how we avoided side-channels in our Go implementation of ML-DSA for more information. Fixed in
0.1.0-rc.3
References
Updated May 05, 2026 · Source: OSV.dev |
0.1.0-rc.1
unknown
Dependencies (16)
+ 8 more |
|
0.1.0-rc.0
unknown
3 CVEs
GHSA-h37v-hp6w-2pp8
Feb 02, 2026
ml-dsa's UseHint function has off by two error when r0 equals zero
Medium
Network
Low
None
None
SummaryThere's a bug in the DetailsThe issue is in
Line 3 uses But the current implementation does this:
The problem is The result is +1 when it should be -1, which is an off by two error mod m. PoCTake MLDSA 44 where γ2 = 95,232 and m = 44. If
But FIPS 204 says:
The function returns 1 when it should return 43. This can happen in real signatures whenever any coefficient of the ImpactThis is a FIPS 204 compliance bug that affects signature verification. When the edge case triggers, valid signatures get rejected. Since MLDSA is supposed to be used for high security post quantum cryptography, having verification randomly fail isn't great. It's also theoretically possible that the mismatch between what signing expects and what verification does could be exploited somehow, though that would need more looking into. The fix is straightforward, just change the condition to explicitly check for positive values:
Fixed in
0.1.0-rc.5
References Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-24850
GHSA-5x2r-hc65-25f9
Jan 28, 2026
ML-DSA Signature Verification Accepts Signatures with Repeated Hint Indices
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
Low
None
Affected Crate: SummaryThe ML-DSA signature verification implementation in the RustCrypto Note: This is a regression bug. The original implementation was correct, but commit Vulnerability DetailsRoot CauseThe vulnerability is located in the
The comparison operator
Regression Analysis
The commit message suggests it was intended to fix issue #894 and make decoding follow the spec, but the change to the Technical ImpactThis vulnerability allows signature malleability - the same logical signature can have multiple valid byte-level encodings. An attacker can take a valid signature and create additional "valid" signatures by duplicating hint indices. Per the ML-DSA specification (FIPS 204, Section 6.2 and Algorithm 26
Affected Security LevelsAll ML-DSA parameter sets are affected:
Proof of ConceptSee the file The PoC uses test vectors from the Wycheproof test suite that specifically test for this invalid encoding:
RemediationUpdate the
Design Intent: ML-DSA is NOT Intended to Allow MalleabilityWhile some cryptographic libraries intentionally permit signature malleability for compatibility or performance reasons, ML-DSA is explicitly designed to prevent it:
Fixed in
0.1.0-rc.4
References
Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-22705
GHSA-hcp2-x6j4-29j7
RUSTSEC-2025-0144
Jan 13, 2026
RustCrypto: Signatures has timing side-channel in ML-DSA decomposition
6.4
/ 10
Medium
Adjacent
High
Low
None
Unchanged
High
High
None
SummaryA timing side-channel was discovered in the Decompose algorithm which is used during ML-DSA signing to generate hints for the signature. DetailsThe analysis was performed using a constant-time analyzer that examines compiled assembly code for instructions with data-dependent timing behavior. The analyzer flags:
The
Original Code:
PoCI do not have an exploit written for this, currently. ImpactThe dividend ( MitigationReplacing division with constant-time Barrett reduction mitigates this risk. Since
See our blog post on how we avoided side-channels in our Go implementation of ML-DSA for more information. Fixed in
0.1.0-rc.3
References
Updated May 05, 2026 · Source: OSV.dev |
0.1.0-rc.0
unknown
Dependencies (16)
+ 8 more |
|
0.0.4
unknown
3 CVEs
GHSA-h37v-hp6w-2pp8
Feb 02, 2026
ml-dsa's UseHint function has off by two error when r0 equals zero
Medium
Network
Low
None
None
SummaryThere's a bug in the DetailsThe issue is in
Line 3 uses But the current implementation does this:
The problem is The result is +1 when it should be -1, which is an off by two error mod m. PoCTake MLDSA 44 where γ2 = 95,232 and m = 44. If
But FIPS 204 says:
The function returns 1 when it should return 43. This can happen in real signatures whenever any coefficient of the ImpactThis is a FIPS 204 compliance bug that affects signature verification. When the edge case triggers, valid signatures get rejected. Since MLDSA is supposed to be used for high security post quantum cryptography, having verification randomly fail isn't great. It's also theoretically possible that the mismatch between what signing expects and what verification does could be exploited somehow, though that would need more looking into. The fix is straightforward, just change the condition to explicitly check for positive values:
Fixed in
0.1.0-rc.5
References Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-24850
GHSA-5x2r-hc65-25f9
Jan 28, 2026
ML-DSA Signature Verification Accepts Signatures with Repeated Hint Indices
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
Low
None
Affected Crate: SummaryThe ML-DSA signature verification implementation in the RustCrypto Note: This is a regression bug. The original implementation was correct, but commit Vulnerability DetailsRoot CauseThe vulnerability is located in the
The comparison operator
Regression Analysis
The commit message suggests it was intended to fix issue #894 and make decoding follow the spec, but the change to the Technical ImpactThis vulnerability allows signature malleability - the same logical signature can have multiple valid byte-level encodings. An attacker can take a valid signature and create additional "valid" signatures by duplicating hint indices. Per the ML-DSA specification (FIPS 204, Section 6.2 and Algorithm 26
Affected Security LevelsAll ML-DSA parameter sets are affected:
Proof of ConceptSee the file The PoC uses test vectors from the Wycheproof test suite that specifically test for this invalid encoding:
RemediationUpdate the
Design Intent: ML-DSA is NOT Intended to Allow MalleabilityWhile some cryptographic libraries intentionally permit signature malleability for compatibility or performance reasons, ML-DSA is explicitly designed to prevent it:
Fixed in
0.1.0-rc.4
References
Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-22705
GHSA-hcp2-x6j4-29j7
RUSTSEC-2025-0144
Jan 13, 2026
RustCrypto: Signatures has timing side-channel in ML-DSA decomposition
6.4
/ 10
Medium
Adjacent
High
Low
None
Unchanged
High
High
None
SummaryA timing side-channel was discovered in the Decompose algorithm which is used during ML-DSA signing to generate hints for the signature. DetailsThe analysis was performed using a constant-time analyzer that examines compiled assembly code for instructions with data-dependent timing behavior. The analyzer flags:
The
Original Code:
PoCI do not have an exploit written for this, currently. ImpactThe dividend ( MitigationReplacing division with constant-time Barrett reduction mitigates this risk. Since
See our blog post on how we avoided side-channels in our Go implementation of ML-DSA for more information. Fixed in
0.1.0-rc.3
References
Updated May 05, 2026 · Source: OSV.dev |
0.0.4
unknown
Dependencies (16)
+ 8 more |
|
0.1.0-pre.2
unknown
3 CVEs
GHSA-h37v-hp6w-2pp8
Feb 02, 2026
ml-dsa's UseHint function has off by two error when r0 equals zero
Medium
Network
Low
None
None
SummaryThere's a bug in the DetailsThe issue is in
Line 3 uses But the current implementation does this:
The problem is The result is +1 when it should be -1, which is an off by two error mod m. PoCTake MLDSA 44 where γ2 = 95,232 and m = 44. If
But FIPS 204 says:
The function returns 1 when it should return 43. This can happen in real signatures whenever any coefficient of the ImpactThis is a FIPS 204 compliance bug that affects signature verification. When the edge case triggers, valid signatures get rejected. Since MLDSA is supposed to be used for high security post quantum cryptography, having verification randomly fail isn't great. It's also theoretically possible that the mismatch between what signing expects and what verification does could be exploited somehow, though that would need more looking into. The fix is straightforward, just change the condition to explicitly check for positive values:
Fixed in
0.1.0-rc.5
References Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-24850
GHSA-5x2r-hc65-25f9
Jan 28, 2026
ML-DSA Signature Verification Accepts Signatures with Repeated Hint Indices
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
Low
None
Affected Crate: SummaryThe ML-DSA signature verification implementation in the RustCrypto Note: This is a regression bug. The original implementation was correct, but commit Vulnerability DetailsRoot CauseThe vulnerability is located in the
The comparison operator
Regression Analysis
The commit message suggests it was intended to fix issue #894 and make decoding follow the spec, but the change to the Technical ImpactThis vulnerability allows signature malleability - the same logical signature can have multiple valid byte-level encodings. An attacker can take a valid signature and create additional "valid" signatures by duplicating hint indices. Per the ML-DSA specification (FIPS 204, Section 6.2 and Algorithm 26
Affected Security LevelsAll ML-DSA parameter sets are affected:
Proof of ConceptSee the file The PoC uses test vectors from the Wycheproof test suite that specifically test for this invalid encoding:
RemediationUpdate the
Design Intent: ML-DSA is NOT Intended to Allow MalleabilityWhile some cryptographic libraries intentionally permit signature malleability for compatibility or performance reasons, ML-DSA is explicitly designed to prevent it:
Fixed in
0.1.0-rc.4
References
Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-22705
GHSA-hcp2-x6j4-29j7
RUSTSEC-2025-0144
Jan 13, 2026
RustCrypto: Signatures has timing side-channel in ML-DSA decomposition
6.4
/ 10
Medium
Adjacent
High
Low
None
Unchanged
High
High
None
SummaryA timing side-channel was discovered in the Decompose algorithm which is used during ML-DSA signing to generate hints for the signature. DetailsThe analysis was performed using a constant-time analyzer that examines compiled assembly code for instructions with data-dependent timing behavior. The analyzer flags:
The
Original Code:
PoCI do not have an exploit written for this, currently. ImpactThe dividend ( MitigationReplacing division with constant-time Barrett reduction mitigates this risk. Since
See our blog post on how we avoided side-channels in our Go implementation of ML-DSA for more information. Fixed in
0.1.0-rc.3
References
Updated May 05, 2026 · Source: OSV.dev |
0.1.0-pre.2
unknown
Dependencies (16)
+ 8 more |
|
0.1.0-pre.1
unknown
3 CVEs
GHSA-h37v-hp6w-2pp8
Feb 02, 2026
ml-dsa's UseHint function has off by two error when r0 equals zero
Medium
Network
Low
None
None
SummaryThere's a bug in the DetailsThe issue is in
Line 3 uses But the current implementation does this:
The problem is The result is +1 when it should be -1, which is an off by two error mod m. PoCTake MLDSA 44 where γ2 = 95,232 and m = 44. If
But FIPS 204 says:
The function returns 1 when it should return 43. This can happen in real signatures whenever any coefficient of the ImpactThis is a FIPS 204 compliance bug that affects signature verification. When the edge case triggers, valid signatures get rejected. Since MLDSA is supposed to be used for high security post quantum cryptography, having verification randomly fail isn't great. It's also theoretically possible that the mismatch between what signing expects and what verification does could be exploited somehow, though that would need more looking into. The fix is straightforward, just change the condition to explicitly check for positive values:
Fixed in
0.1.0-rc.5
References Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-24850
GHSA-5x2r-hc65-25f9
Jan 28, 2026
ML-DSA Signature Verification Accepts Signatures with Repeated Hint Indices
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
Low
None
Affected Crate: SummaryThe ML-DSA signature verification implementation in the RustCrypto Note: This is a regression bug. The original implementation was correct, but commit Vulnerability DetailsRoot CauseThe vulnerability is located in the
The comparison operator
Regression Analysis
The commit message suggests it was intended to fix issue #894 and make decoding follow the spec, but the change to the Technical ImpactThis vulnerability allows signature malleability - the same logical signature can have multiple valid byte-level encodings. An attacker can take a valid signature and create additional "valid" signatures by duplicating hint indices. Per the ML-DSA specification (FIPS 204, Section 6.2 and Algorithm 26
Affected Security LevelsAll ML-DSA parameter sets are affected:
Proof of ConceptSee the file The PoC uses test vectors from the Wycheproof test suite that specifically test for this invalid encoding:
RemediationUpdate the
Design Intent: ML-DSA is NOT Intended to Allow MalleabilityWhile some cryptographic libraries intentionally permit signature malleability for compatibility or performance reasons, ML-DSA is explicitly designed to prevent it:
Fixed in
0.1.0-rc.4
References
Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-22705
GHSA-hcp2-x6j4-29j7
RUSTSEC-2025-0144
Jan 13, 2026
RustCrypto: Signatures has timing side-channel in ML-DSA decomposition
6.4
/ 10
Medium
Adjacent
High
Low
None
Unchanged
High
High
None
SummaryA timing side-channel was discovered in the Decompose algorithm which is used during ML-DSA signing to generate hints for the signature. DetailsThe analysis was performed using a constant-time analyzer that examines compiled assembly code for instructions with data-dependent timing behavior. The analyzer flags:
The
Original Code:
PoCI do not have an exploit written for this, currently. ImpactThe dividend ( MitigationReplacing division with constant-time Barrett reduction mitigates this risk. Since
See our blog post on how we avoided side-channels in our Go implementation of ML-DSA for more information. Fixed in
0.1.0-rc.3
References
Updated May 05, 2026 · Source: OSV.dev |
0.1.0-pre.1
unknown
Dependencies (16)
+ 8 more |
|
0.1.0-pre.0
unknown
3 CVEs
GHSA-h37v-hp6w-2pp8
Feb 02, 2026
ml-dsa's UseHint function has off by two error when r0 equals zero
Medium
Network
Low
None
None
SummaryThere's a bug in the DetailsThe issue is in
Line 3 uses But the current implementation does this:
The problem is The result is +1 when it should be -1, which is an off by two error mod m. PoCTake MLDSA 44 where γ2 = 95,232 and m = 44. If
But FIPS 204 says:
The function returns 1 when it should return 43. This can happen in real signatures whenever any coefficient of the ImpactThis is a FIPS 204 compliance bug that affects signature verification. When the edge case triggers, valid signatures get rejected. Since MLDSA is supposed to be used for high security post quantum cryptography, having verification randomly fail isn't great. It's also theoretically possible that the mismatch between what signing expects and what verification does could be exploited somehow, though that would need more looking into. The fix is straightforward, just change the condition to explicitly check for positive values:
Fixed in
0.1.0-rc.5
References Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-24850
GHSA-5x2r-hc65-25f9
Jan 28, 2026
ML-DSA Signature Verification Accepts Signatures with Repeated Hint Indices
5.3
/ 10
Medium
Network
Low
None
None
Unchanged
None
Low
None
Affected Crate: SummaryThe ML-DSA signature verification implementation in the RustCrypto Note: This is a regression bug. The original implementation was correct, but commit Vulnerability DetailsRoot CauseThe vulnerability is located in the
The comparison operator
Regression Analysis
The commit message suggests it was intended to fix issue #894 and make decoding follow the spec, but the change to the Technical ImpactThis vulnerability allows signature malleability - the same logical signature can have multiple valid byte-level encodings. An attacker can take a valid signature and create additional "valid" signatures by duplicating hint indices. Per the ML-DSA specification (FIPS 204, Section 6.2 and Algorithm 26
Affected Security LevelsAll ML-DSA parameter sets are affected:
Proof of ConceptSee the file The PoC uses test vectors from the Wycheproof test suite that specifically test for this invalid encoding:
RemediationUpdate the
Design Intent: ML-DSA is NOT Intended to Allow MalleabilityWhile some cryptographic libraries intentionally permit signature malleability for compatibility or performance reasons, ML-DSA is explicitly designed to prevent it:
Fixed in
0.1.0-rc.4
References
Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-22705
GHSA-hcp2-x6j4-29j7
RUSTSEC-2025-0144
Jan 13, 2026
RustCrypto: Signatures has timing side-channel in ML-DSA decomposition
6.4
/ 10
Medium
Adjacent
High
Low
None
Unchanged
High
High
None
SummaryA timing side-channel was discovered in the Decompose algorithm which is used during ML-DSA signing to generate hints for the signature. DetailsThe analysis was performed using a constant-time analyzer that examines compiled assembly code for instructions with data-dependent timing behavior. The analyzer flags:
The
Original Code:
PoCI do not have an exploit written for this, currently. ImpactThe dividend ( MitigationReplacing division with constant-time Barrett reduction mitigates this risk. Since
See our blog post on how we avoided side-channels in our Go implementation of ML-DSA for more information. Fixed in
0.1.0-rc.3
References
Updated May 05, 2026 · Source: OSV.dev |
0.1.0-pre.0
unknown
Dependencies (12)
+ 4 more |
|
0.0.3
unknown
yanked
2 CVEs
GHSA-h37v-hp6w-2pp8
Feb 02, 2026
ml-dsa's UseHint function has off by two error when r0 equals zero
Medium
Network
Low
None
None
SummaryThere's a bug in the DetailsThe issue is in
Line 3 uses But the current implementation does this:
The problem is The result is +1 when it should be -1, which is an off by two error mod m. PoCTake MLDSA 44 where γ2 = 95,232 and m = 44. If
But FIPS 204 says:
The function returns 1 when it should return 43. This can happen in real signatures whenever any coefficient of the ImpactThis is a FIPS 204 compliance bug that affects signature verification. When the edge case triggers, valid signatures get rejected. Since MLDSA is supposed to be used for high security post quantum cryptography, having verification randomly fail isn't great. It's also theoretically possible that the mismatch between what signing expects and what verification does could be exploited somehow, though that would need more looking into. The fix is straightforward, just change the condition to explicitly check for positive values:
Fixed in
0.1.0-rc.5
References Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-22705
GHSA-hcp2-x6j4-29j7
RUSTSEC-2025-0144
Jan 13, 2026
RustCrypto: Signatures has timing side-channel in ML-DSA decomposition
6.4
/ 10
Medium
Adjacent
High
Low
None
Unchanged
High
High
None
SummaryA timing side-channel was discovered in the Decompose algorithm which is used during ML-DSA signing to generate hints for the signature. DetailsThe analysis was performed using a constant-time analyzer that examines compiled assembly code for instructions with data-dependent timing behavior. The analyzer flags:
The
Original Code:
PoCI do not have an exploit written for this, currently. ImpactThe dividend ( MitigationReplacing division with constant-time Barrett reduction mitigates this risk. Since
See our blog post on how we avoided side-channels in our Go implementation of ML-DSA for more information. Fixed in
0.1.0-rc.3
References
Updated May 05, 2026 · Source: OSV.dev |
0.0.3
unknown
yanked
Dependencies (10)
+ 2 more |
|
0.0.2
unknown
yanked
2 CVEs
GHSA-h37v-hp6w-2pp8
Feb 02, 2026
ml-dsa's UseHint function has off by two error when r0 equals zero
Medium
Network
Low
None
None
SummaryThere's a bug in the DetailsThe issue is in
Line 3 uses But the current implementation does this:
The problem is The result is +1 when it should be -1, which is an off by two error mod m. PoCTake MLDSA 44 where γ2 = 95,232 and m = 44. If
But FIPS 204 says:
The function returns 1 when it should return 43. This can happen in real signatures whenever any coefficient of the ImpactThis is a FIPS 204 compliance bug that affects signature verification. When the edge case triggers, valid signatures get rejected. Since MLDSA is supposed to be used for high security post quantum cryptography, having verification randomly fail isn't great. It's also theoretically possible that the mismatch between what signing expects and what verification does could be exploited somehow, though that would need more looking into. The fix is straightforward, just change the condition to explicitly check for positive values:
Fixed in
0.1.0-rc.5
References Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-22705
GHSA-hcp2-x6j4-29j7
RUSTSEC-2025-0144
Jan 13, 2026
RustCrypto: Signatures has timing side-channel in ML-DSA decomposition
6.4
/ 10
Medium
Adjacent
High
Low
None
Unchanged
High
High
None
SummaryA timing side-channel was discovered in the Decompose algorithm which is used during ML-DSA signing to generate hints for the signature. DetailsThe analysis was performed using a constant-time analyzer that examines compiled assembly code for instructions with data-dependent timing behavior. The analyzer flags:
The
Original Code:
PoCI do not have an exploit written for this, currently. ImpactThe dividend ( MitigationReplacing division with constant-time Barrett reduction mitigates this risk. Since
See our blog post on how we avoided side-channels in our Go implementation of ML-DSA for more information. Fixed in
0.1.0-rc.3
References
Updated May 05, 2026 · Source: OSV.dev |
0.0.2
unknown
yanked
Dependencies (10)
+ 2 more |
|
0.0.1
unknown
yanked
2 CVEs
GHSA-h37v-hp6w-2pp8
Feb 02, 2026
ml-dsa's UseHint function has off by two error when r0 equals zero
Medium
Network
Low
None
None
SummaryThere's a bug in the DetailsThe issue is in
Line 3 uses But the current implementation does this:
The problem is The result is +1 when it should be -1, which is an off by two error mod m. PoCTake MLDSA 44 where γ2 = 95,232 and m = 44. If
But FIPS 204 says:
The function returns 1 when it should return 43. This can happen in real signatures whenever any coefficient of the ImpactThis is a FIPS 204 compliance bug that affects signature verification. When the edge case triggers, valid signatures get rejected. Since MLDSA is supposed to be used for high security post quantum cryptography, having verification randomly fail isn't great. It's also theoretically possible that the mismatch between what signing expects and what verification does could be exploited somehow, though that would need more looking into. The fix is straightforward, just change the condition to explicitly check for positive values:
Fixed in
0.1.0-rc.5
References Updated Feb 03, 2026 · Source: OSV.dev
CVE-2026-22705
GHSA-hcp2-x6j4-29j7
RUSTSEC-2025-0144
Jan 13, 2026
RustCrypto: Signatures has timing side-channel in ML-DSA decomposition
6.4
/ 10
Medium
Adjacent
High
Low
None
Unchanged
High
High
None
SummaryA timing side-channel was discovered in the Decompose algorithm which is used during ML-DSA signing to generate hints for the signature. DetailsThe analysis was performed using a constant-time analyzer that examines compiled assembly code for instructions with data-dependent timing behavior. The analyzer flags:
The
Original Code:
PoCI do not have an exploit written for this, currently. ImpactThe dividend ( MitigationReplacing division with constant-time Barrett reduction mitigates this risk. Since
See our blog post on how we avoided side-channels in our Go implementation of ML-DSA for more information. Fixed in
0.1.0-rc.3
References
Updated May 05, 2026 · Source: OSV.dev |
0.0.1
unknown
yanked
|