HIGH
fbdev DisplayLink UAF
CVE-2026-43497
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H
KernelScan AI7.1HIGH
01Description
In the Linux kernel, the following vulnerability has been resolved: fbdev: udlfb: add vm_ops to dlfb_ops_mmap to prevent use-after-free dlfb_ops_mmap() uses remap_pfn_range() to map vmalloc framebuffer pages to userspace but sets no vm_ops on the VMA. This means the kernel cannot track active mmaps. When dlfb_realloc_framebuffer() replaces the backing buffer via FBIOPUT_VSCREENINFO, existing mmap PTEs are not invalidated. On USB disconnect, dlfb_ops_destroy() calls vfree() on the old pages while userspace PTEs still reference them, resulting in a use-after-free: the process retains read/write access to freed kernel pages. Add vm_operations_struct with open/close callbacks that maintain an atomic mmap_count on struct dlfb_data. In dlfb_realloc_framebuffer(), check mmap_count and return -EBUSY if the buffer is currently mapped, preventing buffer replacement while userspace holds stale PTEs. Tested with PoC using dummy_hcd + raw_gadget USB device emulation.
02KernelScan AI Analysis
Risk summary
Physical attackers with a USB DisplayLink device can trigger a use-after-free in the udlfb driver by mapping framebuffer memory, triggering buffer reallocation or disconnecting the USB device. This allows reading and writing freed kernel pages, potentially leading to privilege escalation or system crash. Tested with PoC using dummy_hcd + raw_gadget USB device emulation.
Vulnerability analysis
The udlfb driver maps vmalloc'd framebuffer pages to userspace via remap_pfn_range() without setting vm_ops on the VMA. This prevents the kernel from tracking active mmaps. When FBIOPUT_VSCREENINFO triggers buffer reallocation (dlfb_realloc_framebuffer()) or USB disconnect occurs (dlfb_ops_destroy calling vfree()), the backing pages are freed while userspace PTEs remain valid. The attacker retains read/write access to freed kernel pages, creating a classic use-after-free condition. The fix adds vm_operations_struct with open/close callbacks to maintain an atomic mmap_count, and prevents buffer reallocation when mappings are active. Attack requires physical USB access to attach a DisplayLink device (or local capability to emulate one with dummy_hcd/raw_gadget), then mmap /dev/fb* and trigger reallocation/disconnect.
03Fix Versions
| Branch | Fixed in | Patch commit |
|---|---|---|
| 5.10 | 5.10.258 | 60f711cfd580 |
| 5.15 | 5.15.209 | 5931f5651ee3 |
| 6.1 | 6.1.175 | e3d9865dacd7 |
| 6.12 | 6.12.88 | 18dd358de72d |
| 6.18 | 6.18.30 | da9b065cedfd |
| 6.6 | 6.6.140 | 4f312c30f036 |
| 7.0 | 7.0.7 | a2c53a3822ee |
| mainline | 7.1-rc3 | 8de779dc40d3 |