Skip to content

Commit 6f321e3

Browse files
authored
Attack on cggmp21 presignatures (#2482)
Signed-off-by: Denis Varlakov <[email protected]>
1 parent d7c9a1c commit 6f321e3

File tree

2 files changed

+58
-0
lines changed

2 files changed

+58
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
```toml
2+
[advisory]
3+
id = "RUSTSEC-0000-0000"
4+
package = "cggmp21"
5+
date = "2025-11-24"
6+
url = "https://www.dfns.co/article/cggmp21-vulnerabilities-patched-and-explained"
7+
categories = ["crypto-failure"]
8+
keywords = ["hd-wallet", "presignature", "tss"]
9+
aliases = ["CVE-2025-66017"]
10+
[versions]
11+
patched = [] # it's fixed in `cggmp24 v0.7.0-alpha.2` release
12+
```
13+
14+
# CGGMP21 presignatures can be used in the way that significantly reduces security
15+
16+
This attack is against presignatures used in very specific context:
17+
* Presignatures + HD wallets derivation: security level reduces to 85 bits \
18+
Previously you could generate a presignature, and then choose a HD derivation path while issuing a partial signature via [`Presignature::set_derivation_path`](https://docs.rs/cggmp21/0.6.3/cggmp21/signing/struct.Presignature.html#method.set_derivation_path), which is malleable to attack that reduces target security level. To mitigate, this method has been removed from API.
19+
* Presignatures + "raw signing" (when signer signs a hash without knowing an original message): results into signature forgery attack \
20+
Previously, you could use [`Presignature::issue_partial_signature`](https://docs.rs/cggmp21/0.6.3/cggmp21/signing/struct.Presignature.html#method.issue_partial_signature) with hashed message without ever providing original mesage. In new API, this method only accepts digests for which original message has been observed.
21+
22+
### Patches
23+
`cggmp24 v0.7.0-alpha.2` release contains API changes that make it impossible to use presignatures in contexts in which it reduces security. Follow the [migration guidelines](https://github.com/LFDT-Lockness/cggmp21/blob/v0.7.0-alpha.2/CGGMP21_MIGRATION.md) to upgrade.
24+
25+
### Workarounds
26+
You can continue using un-patched versions of library as long as you don't use presignatures in said scenarios where it weakens system security. To be sure, migrate to patched version that excludes presignatures from being used in such scenarios.
27+
28+
### References
29+
Read our [blog post](https://www.dfns.co/article/cggmp21-vulnerabilities-patched-and-explained) to learn more.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
```toml
2+
[advisory]
3+
id = "RUSTSEC-0000-0000"
4+
package = "cggmp24"
5+
date = "2025-11-24"
6+
url = "https://www.dfns.co/article/cggmp21-vulnerabilities-patched-and-explained"
7+
categories = ["crypto-failure"]
8+
keywords = ["hd-wallet", "presignature", "tss"]
9+
aliases = ["CVE-2025-66017"]
10+
[versions]
11+
patched = [">= 0.7.0-alpha.2"]
12+
```
13+
14+
# CGGMP21 presignatures can be used in the way that significantly reduces security
15+
16+
This attack is against presignatures used in very specific context:
17+
* Presignatures + HD wallets derivation: security level reduces to 85 bits \
18+
Previously you could generate a presignature, and then choose a HD derivation path while issuing a partial signature via [`Presignature::set_derivation_path`](https://docs.rs/cggmp21/0.6.3/cggmp21/signing/struct.Presignature.html#method.set_derivation_path), which is malleable to attack that reduces target security level. To mitigate, this method has been removed from API.
19+
* Presignatures + "raw signing" (when signer signs a hash without knowing an original message): results into signature forgery attack \
20+
Previously, you could use [`Presignature::issue_partial_signature`](https://docs.rs/cggmp21/0.6.3/cggmp21/signing/struct.Presignature.html#method.issue_partial_signature) with hashed message without ever providing original mesage. In new API, this method only accepts digests for which original message has been observed.
21+
22+
### Patches
23+
`cggmp24 v0.7.0-alpha.2` release contains API changes that make it impossible to use presignatures in contexts in which it reduces security. Follow the [migration guidelines](https://github.com/LFDT-Lockness/cggmp21/blob/v0.7.0-alpha.2/CGGMP21_MIGRATION.md) to upgrade.
24+
25+
### Workarounds
26+
You can continue using un-patched versions of library as long as you don't use presignatures in said scenarios where it weakens system security. To be sure, migrate to patched version that excludes presignatures from being used in such scenarios.
27+
28+
### References
29+
Read our [blog post](https://www.dfns.co/article/cggmp21-vulnerabilities-patched-and-explained) to learn more.

0 commit comments

Comments
 (0)