RustCrypto Cmov/CmovEq on aarch64 can produce wrong results if high-bits of registers are set
Key facts
- Attack vector
- Local
- Privileges required
- Low
- User interaction
- None
- Attack complexity
- Low
- Attack requirements
- Present
- Impact type
- —
- Confidentiality · integrity · availability
- None · Low · None
- Fix status
- Partial Red Hat: 1 fixed, 4 without a fix
Attack profile from CVSS 4.0 · CNA. Fix status from CNA, GitHub and Red Hat.
Summary
RustCrypto CMOV provides conditional move CPU intrinsics which are guaranteed on major platforms to execute in constant-time and not be rewritten as branches by the compiler. From 0.1.1 until 0.5.4, the aarch64 implementations of Cmov and CmovEq in cmov/src/backends/aarch64.rs assume high bits are zero-extended when loading values smaller than a register, so set high bits such as [8..] in a Cmov selector or [16..] of self or other in the u16 and i16 CmovEq implementations can cause left.cmovz(&right, condition) to produce incorrect output. This issue is fixed in version 0.5.4.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- Poc
- Automatable
- No
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| RustCrypto | utils | 0.1.1 to before 0.5.4 | 0.5.4 | Patch available | CNA |
| — | cmov (crates.io) | 0.1.1 to before 0.5.4 | 0.5.4 | Patch available | GHSA-3rjw-m598-pq24 |
- utils VendorRustCrypto Affected 0.1.1 to before 0.5.4 Fixed in 0.5.4 Patch available CNA
- cmov (crates.io) Vendor— Affected 0.1.1 to before 0.5.4 Fixed in 0.5.4 Patch available GHSA-3rjw-m598-pq24
CPE configurations NVD · 1
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:rustcrypto:cmov:*:*:*:*:*:rust:*:* | 0.1.1 to before 0.5.4 | Vulnerable | RustCrypto |
- cpe:2.3:a:rustcrypto:cmov:*:*:*:*:*:rust:*:* Versions 0.1.1 to before 0.5.4 Vulnerable ·RustCrypto
Remediation
- Fix · CNA utils (RustCrypto) Fixed in 0.5.4
- Fix · GHSA-3rjw-m598-pq24 cmov (crates.io) Fixed in 0.5.4 Advisory →
Red Hat 1 advisory
- RHSA-2026:42923 Released 2026-07-21 · Red Hat rating ModerateRed Hat Hardened Images RPMs Security Update
- Red Hat Hardened Images cargo-1.97.1-1.1.hum1@aarch64, cargo-1.97.1-1.1.hum1@x86_64, clippy-1.97.1-1.1.hum1@aarch64 +36
Vendor assessments
Red Hat
Red Hat rating: Low. Red Hat's page for this CVE →
| Product | Status | Plan or fix |
|---|---|---|
| Confidential Compute Attestation | Affected | — |
| Red Hat Enterprise Linux 10 | Affected | — |
| Red Hat Enterprise Linux 9 | Affected | — |
| Red Hat Trusted Profile Analyzer | Affected | — |
| Red Hat Hardened Images | Fixed | RHSA-2026:42923 |
Not affected: 1 product
- Red Hat Hardened Images
Timeline
- 2026-10-02 Threatist record created from CVE-2026-50185
- 2026-10-03 Alias added: GHSA-3rjw-m598-pq24
References
More RustCrypto Cmov vulnerabilities
- TI-2026-18943 RustCrypto cmov: thumbv6m-none-eabi compiler emits non-constant time assembly when using cmovnz CVSS 4.0HIGH 8.9
Sources
- CVE-2026-50185 · CVE Program
- CVE-2026-50185 · NVD
- FIRST EPSS
- GHSA-3rjw-m598-pq24 · GitHub Advisory Database · CC BY 4.0
- CVE-2026-50185 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences