VDB
Sign up
LOW2.5

GHSA-49hh-fprx-m68g

Default functions in VolatileMemory trait lack bounds checks, potentially leading to out-of-bounds memory accesses

Details

### Impact An issue was discovered in the default implementations of the `VolatileMemory::{get_atomic_ref, aligned_as_ref, aligned_as_mut, get_ref, get_array_ref}` trait functions, which allows out-of-bounds memory access if the `VolatileMemory::get_slice` function returns a `VolatileSlice` whose length is less than the function’s `count` argument. No implementations of `get_slice` provided in `vm_memory` are affected. Users of custom `VolatileMemory` implementations may be impacted if the custom implementation does not adhere to `get_slice`'s documentation.

### Patches The issue started in version 0.1.0 but was fixed in version 0.12.2 by inserting a check that verifies that the `VolatileSlice` returned by `get_slice` is of the correct length.

### Workarounds Not Required

### References https://github.com/rust-vmm/vm-memory/commit/aff1dd4a5259f7deba56692840f7a2d9ca34c9c8 https://crates.io/crates/vm-memory/0.12.2

Are you affected?

Enter the version of the package you're using.

Affected packages

crates.io/vm-memory
Introduced in: 0Fixed in: 0.12.2

Upgrade vm-memory to 0.12.2 or newer (ecosystem crates.io).

References