microVM: refuse device buffers outside the e820 RAM ranges
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 18/100
- Issue 类型
- 缺陷
- 描述清晰度
- 基本清楚
- 活跃度
- 活跃
- 技术栈
- linux
调研方向
Start with the "Memory layout" section of doc/design/cold-boot.md and section 2.3 of the architecture guide in #529 to learn the e820 RAM, MMIO aperture and reserved-range rules. The device work is in OpenVMM under the nanvix/openvmm submodule, in the virtio queue descriptor path or the guest-memory view given to microVM devices. Done means descriptors whose buffers cross the aperture or a reserved range, such as the page at 0x30000 or the ISA hole, are refused with a defined error completion or device reset, and OpenVMM tests cover those three cases.
由索引模型根据 Issue 内容生成。
描述
Summary
The microVM memory layout requires that loader writes and DMA ranges fit wholly inside a RAM range and never cross the MMIO aperture or a reserved boot structure (section 2.3 of the architecture guide in doc/design/). The Linux direct loader meets this for its own writes. Device DMA does not: OpenVMM gives each microVM virtio device the whole guest memory, so a descriptor fails only when its buffer leaves guest RAM, for example in the MMIO aperture. A guest can point a device buffer at a range that the e820 map reserves inside RAM, such as the shared virtio interrupt-status page at 0x30000, which the devices themselves update, or the ISA hole.
The guest can already write those pages directly, so this does not weaken isolation between the guest and the host. The devices only enforce less than the layout states.
Intended behavior
Every buffer of a microVM virtio device lies wholly inside a RAM range of the e820 map. The device refuses a descriptor whose buffer crosses the MMIO aperture or a reserved range, such as the shared interrupt-status page, instead of reading or writing it.
Tasks
- Give the microVM virtio devices a guest-memory view, or a descriptor check in the virtio queue, that admits only the e820 RAM ranges, in OpenVMM in the
nanvix/openvmmsubmodule, and promote the pin. - Define how a device reports a refused buffer: an error completion where its protocol has one, or marking the device as needing reset.
- Add OpenVMM coverage for buffers in the interrupt-status page, in the ISA hole, and across the aperture.
- Note the enforcement in section 2.3 of the architecture guide.
- 主要语言
- Python
- 星标
- 380
- 派生
- 24
- 平均合并
- 13 小时 18 分钟
- 30 天内合并 PR
- 292
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
microsoft/nvx 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 80/100
维护者通常 1 天内回复
-
Track sandbox live share bugs: the time ABI bind hides or breaks shares at /run targets可能已有人在做 @jay23606 于 1 天前认领。 未关闭bug-hunt confirmed
难度 2/5 1-3 小时 新手友好度 76/100
维护者通常 1 天内回复
-
难度 3/5 半天 新手友好度 45/100
维护者通常 1 天内回复
-
难度 4/5 3-5 天 新手友好度 22/100
维护者通常 1 天内回复
-
难度 4/5 3-5 天 新手友好度 15/100
维护者通常 1 天内回复
相似的 Issue
-
bug
难度 2/5 1-3 小时 新手友好度 76/100
Graphify-Labs/graphify#4524 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 78/100
topoteretes/cognee#5982 ·
维护者通常 1 天内回复
-
Patches of derivations with `__structuredAttrs` are ignored可能已有人在做 @KiaraGrouwstra 今天认领。 未关闭
难度 2/5 1-3 小时 新手友好度 81/100
nix-community/vulnix#184 ·
-
New Internship未关闭new_internship
难度 1/5 1 小时以内 新手友好度 65/100
-
难度 2/5 1-3 小时 新手友好度 64/100
aws-samples/sample-per-model-bedrock#295 ·
维护者通常 1 天内回复