GHSA-r7wm-4vf2-h44w json
LLVM introduces timing-vulnerable optimizations into ML-KEM and ML-DSA operations intended to be constant-time
published 2026-10-30 9 d ago modified 2026-10-30 9 d ago also RUSTSEC-2026-0426
- cvss
- —
- not scored
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- —
- no score, EPSS covers CVEs only
- public exploits
- 0
- none known
Summary
## Summary
On targets that do not have a conditional move/select operations, LLVM compiles the internal `conditional_sub_u32()` function, into one that will contain a conditional jump on secret-dependent data, which could leak information about encapsulation and signing keys.
`conditional_sub_u32()` is used throughout the field arithmetic of both ML-KEM and ML-DSA.
## Impact
The variable-time jumps have been observed for ML-KEM and ML-DSA on: - `i586-unknown-linux-gnu` - `s390x-unknown-linux-gnu`
Additionally, ML-DSA sees the vulnerable LLVM optimization on `x86_64-unknown-linux-gnu`, for `hazardous::dsa::mldsa44` and `hazardous::dsa::mldsa87`.
The leakage this LLVM optimization introduces could enable recovery of cryptographic secrets. The practicality of exploiting the leakage depends on the compiler, target CPU used and how "close" to the process using the vulnerable functions the attacker is.
## Resolution
Upgrade to `v0.17.16` or `v0.18.1`. `conditional_sub_u32()` has been re-written to take conditional-move/jump ops availability into account.
Patch / fix
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| crates.io | orion | >=0.0.0-0, <0.17.16 >=0.18.0-0, <0.18.1 |
0.17.16 0.18.1 |
References
Sources
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.