Firecracker v1.14.4 漏洞修复总结 1. 漏洞概述 本次更新修复了多个关键漏洞,主要涉及内存管理、设备初始化序列、时钟同步及 DoS 风险: 内存分配溢出 (#5762): Guest 可构造描述符链,导致 Firecracker 分配比 Guest 实际提供的更多的主机内存,引发主机内存消耗过高。 PCI/MMIO 设备初始化序列违规 (#XXXX): PCI 传输未强制执行 virtio 设备初始化序列(与 MMIO 不一致),且 MMIO 传输允许非法的设备状态位写入(清除已设置的位)。 内存块对齐漏洞 (#5793): 在 virtio-mem plug/unplug 操作中,若内存块未对齐到 slot 边界,会跳过 KVM slot 更新,导致 Guest 可能访问 Firecracker 认为已释放的内存。 DoS 漏洞 (#5794): Guest 可构造过大的气球统计描述符,暂时挂起 VMM 事件循环。 时钟跳跃漏洞 (#5809): 在 Host Linux >= 5.16 的 x86_64 Guest 使用 时,恢复快照会导致单调时钟基于经过的墙钟时间发生跳跃。 aarch64 缓存路径缺失 (#5782): 在特定内核版本组合下,aarch64 guests 缺少必要的缓存信息路径。 2. 影响范围 架构: x86_64, aarch64 内核版本: Host kernels >= 6.3 Guest kernels >= 6.1.156 Host Linux >= 5.16 (针对时钟漏洞) 配置: 使用 virtio-rng 的 Guest 使用 PCI 或 MMIO 传输的 virtio 设备 启用了 的 microVMs 使用 时钟源的 Guest 3. 修复方案 限制熵值: 将 virtio-rng 每个请求的熵限制为 64 KiB。 强制执行初始化: PCI 传输现在强制执行 virtio 设备初始化序列,验证设备状态转换,拒绝在 FEATURES_OK 窗口之外的队列配置写入,并在设备激活失败时设置 。 拒绝非法写入: MMIO 传输拒绝清除之前已设置位的设备状态写入(重置除外)。 修复路径: 修复了 aarch64 guests 中缺失的 路径。 修复对齐逻辑: 修复了 virtio-mem plug/unplug 时未对齐内存块的 KVM slot 更新逻辑。 限制描述符长度: 限制气球统计描述符的长度,防止 DoS。 修复时钟逻辑**: 修复了时钟跳跃 bug。若用户希望显式推进时钟(使用 ),可通过 API 中的新 标志重新启用。