RustCrypto Cmov/CmovEq on aarch64 can produce wrong results if high-bits of registers are set
Default status is the baseline for the product, each version can override it (e.g. patched versions marked unaffected).
| Vendor | Product | Default status | Versions | ||||||
|---|---|---|---|---|---|---|---|---|---|
| RustCrypto | utils | affected |
|
No data.
| Vendor | Product | Versions | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Rustcrypto | Utils |
|
| Source | ID | Title |
|---|---|---|
Github GHSA |
GHSA-3rjw-m598-pq24 | Cmov/CmovEq on aarch64 can produce wrong results if high-bits of registers are set |
No CVSS v3.0
No CVSS v2
This CVE is not in the KEV list.
Exploit prediction score: < 1% (0.157% probability within 30 days)
| Type | Values Removed | Values Added |
|---|---|---|
| First Time appeared |
Rustcrypto cmov
|
|
| CPEs | cpe:2.3:a:rustcrypto:cmov:*:*:*:*:*:rust:*:* | |
| Vendors & Products |
Rustcrypto cmov
|
|
| Metrics |
cvssV3_1
|
| Type | Values Removed | Values Added |
|---|---|---|
| Metrics |
ssvc
|
| Type | Values Removed | Values Added |
|---|---|---|
| First Time appeared |
Rustcrypto
Rustcrypto utils |
|
| Vendors & Products |
Rustcrypto
Rustcrypto utils |
| Type | Values Removed | Values Added |
|---|---|---|
| Description | 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. | |
| Title | RustCrypto Cmov/CmovEq on aarch64 can produce wrong results if high-bits of registers are set | |
| Weaknesses | CWE-758 | |
| References |
| |
| Metrics |
cvssV4_0
|