CVE-2026-23519
📋 TL;DR
This vulnerability in RustCrypto CMOV allows timing side-channel attacks on cryptographic operations when using the thumbv6m-none-eabi compiler target (Cortex M0/M0+/M1). The cmovnz instruction may be compiled to non-constant-time assembly, potentially leaking secret key material. Only Rust applications using this specific compiler target for embedded ARM Cortex-M0/M0+/M1 devices are affected.
💻 Affected Systems
- RustCrypto CMOV library
📦 What is this software?
Cmov by Rustcrypto
⚠️ Risk & Real-World Impact
Worst Case
Full cryptographic key compromise leading to decryption of sensitive data, authentication bypass, or complete system compromise in embedded security devices.
Likely Case
Partial key recovery through timing analysis, potentially enabling decryption of some communications or weakening cryptographic protections.
If Mitigated
No impact if constant-time operations are not critical for the application or if the vulnerability is not exploitable in the specific deployment context.
🎯 Exploit Status
Exploitation requires physical access or ability to measure timing with high precision on the embedded device. Timing attacks are complex to execute in practice.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: 0.4.4
Vendor Advisory: https://github.com/RustCrypto/utils/security/advisories/GHSA-2gqc-6j2q-83qp
Restart Required: Yes
Instructions:
1. Update Cargo.toml to specify 'cmov = "^0.4.4"' 2. Run 'cargo update' 3. Recompile your Rust application 4. Deploy the updated binary to affected embedded devices
🔧 Temporary Workarounds
Avoid thumbv6m-none-eabi target
allIf possible, use a different compiler target that doesn't exhibit this vulnerability
Modify .cargo/config to use different target triple
Disable vulnerable functionality
allAvoid using cmovnz operations in security-critical code paths
Manually review and modify Rust code to avoid cmov::cmovnz calls
🧯 If You Can't Patch
- Isolate affected embedded devices from untrusted networks
- Implement additional cryptographic protections at higher protocol layers
🔍 How to Verify
Check if Vulnerable:
Check Cargo.lock for cmov dependency version <0.4.4 and verify target architecture includes thumbv6m-none-eabi
Check Version:
grep -A2 'name = "cmov"' Cargo.lock
Verify Fix Applied:
Verify Cargo.lock shows cmov version >=0.4.4 and recompile application
📡 Detection & Monitoring
Log Indicators:
- No specific log indicators for this timing vulnerability
Network Indicators:
- Unusual timing patterns in cryptographic operations if measurable
SIEM Query:
Not applicable - hardware-level timing attack