microsoft / microsoft/openvmm

ide: audit enlightened INT13 command set and consider restricting to BIOS-issued commands

Open
#3,133 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug storage
Dominant language
Rust
Stars
1.9k
Forks
238
Avg merge
1d 15h
Merged PRs (30d)
100

Description

The enlightened INT13 HDD path (enlightened_hdd_command) currently accepts any IdeCommand value from the guest-provided EnlightenedInt13Command.command field without validation.

Two questions worth investigating:

  1. What commands does the Hyper-V synthetic BIOS actually send via the enlightened INT13 port? This requires access to the BIOS firmware source to determine the exact command set.

  2. Should we restrict the enlightened path to only accept commands the BIOS is known to issue? Adding an allowlist would make the contract explicit and prevent silent misbehavior for unexpected commands — a defense-in-depth improvement.

Context: This came up during review of #3062 (adding WRITE_DMA_FUA_EXT to the 48-bit LBA setup). The fix in #3062 is a consistency fix between the enlightened register setup and handle_command(), but the broader question of which commands the BIOS actually sends — and whether we should enforce that — is worth tracking separately.

Related:

  • #3062 — WRITE_DMA_FUA_EXT 48-bit LBA setup fix
  • #3040 — non-DMA command rejection (DMA allowlist for the enlightened path)
  • #3061 — original issue for the FUA_EXT bug

Contributor guide

No contributing guide indexed for this repository

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 by obtaining the Hyper-V synthetic BIOS source to identify commands sent through the enlightened INT13 port. Then inspect enlightened_hdd_command, EnlightenedInt13Command.command, and handle_command(), using #3040 and #3062 for context. Done means documenting the BIOS command set and deciding whether an explicit allowlist is warranted.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
operating-systems, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.