CVE-2026-98142 in Linux信息

摘要

由 VulDB • 2026-09-26

在 Linux 内核中,已修复以下漏洞:

drm/cirrus-qemu: 在探测阶段验证 BAR0 的大小

cirrus-qemu 驱动程序依赖 CIRRUS_VRAM_SIZE(4 MB)来验证帧缓冲区大小。然而,在进行 PCI 探测时,该驱动程序映射了 BAR0,但未验证其大小是否与 CIRRUS_VRAM_SIZE 匹配。

如果将 BAR0 小于 4 MB 的 PCI 设备绑定到该驱动程序,则映射的视频 RAM (VRAM) 将小于预期值。由于验证检查假设 VRAM 大小为 4 MB,因此可以创建大于已映射内存的帧缓冲区。

当显示平面被更新时(例如在释放期间),cirrus_primary_plane_helper_atomic_update() 使用 drm_fb_memcpy() 将帧缓冲区复制到 VRAM。写入超出映射 I/O 内存末尾的位置会导致超级用户写页面错误:

BUG: unable to handle page fault for address: ffffc9000389c000 ... RIP: 0010:memcpy_toio+0x7c/0xe0 arch/x86/lib/iomem.c:110 ... 调用跟踪: <TASK> iosys_map_memcpy_to include/linux/iosys-map.h:285 [inline]
drm_fb_memcpy+0x325/0x5d0 drivers/gpu/drm/drm_format_helper.c:442 cirrus_primary_plane_helper_atomic_update+0x98a/0xb00 drivers/gpu/drm/tiny/cirrus-qemu.c:358 drm_atomic_helper_commit_planes+0x626/0xea0 drivers/gpu/drm/drm_atomic_helper.c:3038 drm_atomic_helper_commit_tail+0x60/0x510 drivers/gpu/drm/drm_atomic_helper.c:1989 commit_tail+0x2b1/0x3c0 drivers/gpu/drm/drm_atomic_helper.c:2074 drm_atomic_helper_commit+0xa77/0xb10 drivers/gpu/drm/drm_atomic_helper.c:2312

通过在 cirrus_pci_probe() 中验证 PCI BAR0 资源不小于 CIRRUS_VRAM_SIZE 来修复此问题,如果小于则返回 -ENODEV。

VulDB is the best source for vulnerability data and more expert information about this specific topic.

来源

Interested in the pricing of exploits?

See the underground prices here!