trailofbits / trailofbits/coop

Research whether the Firecracker vsock device is needed

Open
#477 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
243
Forks
13
Avg merge
1d 20h
Merged PRs (30d)
30

Description

Observation

At commit df5909c, src/vm.rs::build_config unconditionally adds a vsock device to every Firecracker VM. Instance helpers derive its CID and host socket path, and lifecycle cleanup removes the socket. A repository search found configuration, cleanup, documentation, and tests, but no coop runtime consumer of this transport. Workspace transfers, agent sessions, and the credential proxy use SSH.

This suggests the device may expose unnecessary guest-accessible VMM functionality. This is a source-inspection finding, not a demonstrated vulnerability; external consumers or undocumented dependencies have not been ruled out.

Research scope

  • Confirm whether any supported workflow, guest service, integration fixture, or external integration depends on the Firecracker vsock device.
  • Determine whether the device can be omitted by default, removed entirely, or made explicit opt-in for an identified use case.
  • Check behavior for existing persisted VM configurations and across start, restart, restore, reprovision, and destroy.
  • Keep the scope specific to Firecracker. Lima may use vsock internally for its own guest agent and must be assessed independently.

Expected outcome

Document the consumer inventory and recommend retaining, removing, or gating the device with concrete reasons. If removal is proposed, validate the full Linux lifecycle, workspace transfers, agent launches, and proxy operation without it. Update affected configuration tests and docs, and state any compatibility impact. Do not claim an exploit or quantified security improvement without evidence.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with src/vm.rs::build_config and trace the vsock CID, host socket path, cleanup, configuration, documentation, and tests. Audit supported workflows and integrations across start, restart, restore, reprovision, and destroy, while assessing Lima separately. Done means a documented consumer inventory, a retain/remove/opt-in recommendation, and lifecycle validation with compatibility impacts recorded.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
infrastructure
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.