Skip to content
Fencer Vulns
no cvss —

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

  • crates.io orion 0.17.16, 0.18.1

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.