Skip to content

Undefined behaviour in `kvm_ioctls::ioctls::vm::VmFd::create_device`

Moderate severity GitHub Reviewed Published Dec 23, 2024 to the GitHub Advisory Database • Updated Dec 23, 2024

Package

cargo kvm-ioctls (Rust)

Affected versions

< 0.19.1

Patched versions

0.19.1

Description

An issue was identified in the VmFd::create_device function, leading to undefined behavior and miscompilations on rustc 1.82.0 and newer due to the function's violation of Rust's pointer safety rules.

The function downcasted a mutable reference to its struct kvm_create_device argument to an immutable pointer, and then proceeded to pass this pointer to a mutating system call. Rustc 1.82.0 and newer elides subsequent reads of this structure's fields, meaning code will not see the value written by the kernel into the fd member. Instead, the code will observe the value that this field was initialized to prior to calling VmFd::create_device (usually, 0).

The issue started in kvm-ioctls 0.1.0 and was fixed in 0.19.1 by correctly using
a mutable pointer.

References

Published to the GitHub Advisory Database Dec 23, 2024
Reviewed Dec 23, 2024
Last updated Dec 23, 2024

Severity

Moderate

Weaknesses

CVE ID

No known CVE

GHSA ID

GHSA-3qx8-rv27-j6gp

Source code

Loading Checking history
See something to contribute? Suggest improvements for this vulnerability.