Skip to content
Fencer Intel
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 15d ago modified 15d 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

Is GHSA-r7wm-4vf2-h44w in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.

Check with Fencer

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 Intel 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.