devices: fs: validate path components Introduce component-level input validation in FUSE request handlers and the virtio-fs filesystem passthrough layer. This enforces that all path components are strictly checked to prevent relative traversals or raw path separators from crossing device boundaries. This component-level validation serves as a defense-in-depth security check to complement existing protection layers. This change includes: - Global input validation for lookup, mkdir, rmdir, create, unlink, rename, mknod, link, and symlink. - Multi-layer validation inside the general FUSE message parser. - A new unit test verifying lookup block on relative path traversals. Co-authored-by: Duy Truong <duytruong@google.com> BUG=b:508645172 TEST=tools/dev_container ./tools/presubmit quick Change-Id: Icc0f79ed77c678c0251849ea2c887febe58bb0d6 Reviewed-on: https://chromium-review.googlesource.com/c/crosvm/crosvm/+/7839479 Commit-Queue: Keiichi Watanabe <keiichiw@chromium.org> Reviewed-by: Frederick Mayle <fmayle@google.com>
The ChromeOS Virtual Machine Monitor
crosvm is a secure, lightweight, and performant Virtual Machine Monitor (VMM) written in Rust. Originally developed for ChromeOS to run Linux (Crostini) and Android guests (ARCVM). It is now used across multiple products and platforms such as TerminalApp on Android, Cuttlefish and Windows.
crosvm focuses on security through strong isolation and a modern, memory-safe implementation. It leverages hardware-assisted virtualization to provide a robust execution environment for untrusted code.
io_uring, vhost, and an internal async runtime (cros_async).crosvm implements a wide range of paravirtualized devices via the virtio standard:
virtio-net with optional vhost and slirp backends.virtio-block supporting raw, qcow2, zstd, and Android sparse formats.virtio-gpu with 2D and 3D acceleration (via virglrenderer, gfxstream, or vulkano).virtio-snd with backends for CRAS (ChromeOS), AAudio (Android), and more.virtio-fs and virtio-9p.crosvm is designed with a “process-per-device” model:
forked into its own process.The recommended way to build and develop crosvm is using the provided development container.
Use the dev container to build a release version of crosvm:
./tools/dev_container ./tools/build_release
Follow this example usage to run a simple Linux guest.
#crosvm channel on Matrix.crosvm is an open-source project licensed under the BSD-3-Clause License.