CVE-2026-63826
NoneCVSS
—
EPSS
0.2%
Published
Jul 19, 2026
CISA due date
—
Cloudanix analysis
A local user may be able to crash certain Linux systems by changing framebuffer display settings in a way that makes the kernel use memory it already freed.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Use After Free
- Remediation
- Patch
- Effort
- Medium
- Patch risk
- Low
What it actually does
This is a Linux kernel use-after-free in the framebuffer device subsystem. The vulnerable code path occurs when userspace replaces a framebuffer modelist through the fbdev modes sysfs interface. The kernel frees the old modelist but may leave stale pointers in fb_display[i].mode for unmapped consoles and in fb_info->mode for the current framebuffer mode. Later reads through paths such as FBIOPUT_VSCREENINFO with FB_ACTIVATE_INV_MODE or the framebuffer mode sysfs attribute can dereference freed memory. The most likely technical outcomes are a kernel crash or memory-safety fault; depending on kernel configuration, allocator behavior, and attacker ability to influence freed memory reuse, more severe local privilege-escalation behavior may be possible, but no public exploit maturity is currently indicated.
Why it matters to the business
Systems using affected Linux kernels with framebuffer/fbcon functionality exposed to local users may be vulnerable to local denial of service through kernel crashes. The risk is primarily operational availability impact on workstations, kiosks, embedded devices, virtual consoles, and appliances that rely on fbdev/fbcon. Internet-facing remote exploitation is not expected from the vulnerability description, and current EPSS is low, but kernel memory-safety flaws should still be prioritized in normal kernel patch cycles because successful exploitation could affect the whole host.
How an attack unfolds
An attacker first needs local ability to interact with framebuffer interfaces, such as /dev/fb* and related sysfs attributes under /sys/class/graphics/fb*. They manipulate console-to-framebuffer state so that a console is no longer mapped to the framebuffer while its fb_display[i].mode pointer remains set. They then replace the framebuffer modelist from userspace, causing the old modelist to be freed while stale pointers remain. Finally, they trigger a later code path that reads those stale pointers, such as issuing FBIOPUT_VSCREENINFO with FB_ACTIVATE_INV_MODE or reading the framebuffer mode sysfs attribute. The dereference of freed memory can produce a kernel oops, panic, or potentially a more controlled memory-corruption primitive if the attacker can shape kernel heap reuse.
How to fix it
Upgrade to a Linux kernel build that includes the upstream fix for the fbdev store_modes() use-after-free. Where distribution packages are used, install the vendor-provided kernel security update rather than attempting a source-level workaround. If immediate patching is not possible, reduce exposure by restricting local access to framebuffer devices and framebuffer sysfs attributes, limiting interactive shell access on affected systems, disabling unused framebuffer/fbcon functionality where operationally feasible, and relying on kernel hardening features such as slab freelist hardening, KASLR, SMEP/SMAP, and lockdown mode. Because no exact fixed package versions were provided, track the relevant distribution advisory for CVE-2026-63826 and verify that the installed kernel changelog includes the fbdev store_modes() fix that clears fb_display[i].mode and fb_info->mode before freeing the modelist.
How to confirm the fix worked
Confirm remediation by verifying that the running kernel version is at or above the vendor-fixed release for this issue and that the kernel package changelog or source contains the fbdev fix in store_modes() that calls fbcon_delete_modelist() and clears fb_info->mode before freeing the old modelist. On source-based kernels, inspect drivers/video/fbdev/core/fbsysfs.c and related fbcon code for the fix. Validate exposure by checking whether fbdev devices exist, whether fbcon is active, and whether unprivileged or low-privileged users can access /dev/fb* or write to /sys/class/graphics/fb*/modes. Avoid running proof-of-concept trigger sequences on production systems because successful validation may crash the kernel.
Typical attack path
- Obtain local access to a Linux system where fbdev/fbcon is present and framebuffer device or sysfs access is permitted.
- Interact with framebuffer console binding or mode configuration so that a console becomes unmapped while retaining a stale mode pointer.
- Write a replacement modelist through the framebuffer modes sysfs interface, causing the previous modelist to be freed.
- Trigger a later framebuffer mode validation or display path, such as FBIOPUT_VSCREENINFO with FB_ACTIVATE_INV_MODE or reading the framebuffer mode attribute.
- Cause the kernel to dereference freed memory, leading to a crash or potentially further exploitation depending on heap control and kernel hardening.
How to detect it
Look for evidence of local framebuffer manipulation followed by kernel faults. Useful sources include kernel logs from dmesg, journald, /var/log/kern.log, /var/log/messages, auditd syscall and file-watch logs, EDR telemetry for device and sysfs access, and crash dump records such as kdump/vmcore metadata. Search for kernel oops, BUG, general protection fault, page fault, KASAN use-after-free, or panic messages with stack traces referencing fbdev/fbcon functions such as store_modes, fbcon_mode_deleted, fb_mode_is_equal, mode_string, show_mode, fb_destroy_modelist, or fbcon_delete_modelist. Also review writes to /sys/class/graphics/fb*/modes and reads of /sys/class/graphics/fb*/mode near crashes, ioctl activity against /dev/fb*, and writes to /sys/class/vtconsole/vtcon*/bind that may indicate fbcon unbinding before triggering the stale pointer path. There are no known public threat actors or ransomware campaigns associated with this issue in the provided data, so detection should focus on local abuse patterns and kernel crash artifacts rather than network indicators.
- /sys/class/graphics/fb*/modes
- /sys/class/graphics/fb*/mode
- /sys/class/vtconsole/vtcon*/bind
- /dev/fb0
- /dev/fb1
- FBIOPUT_VSCREENINFO
- FB_ACTIVATE_INV_MODE
- store_modes
- fbcon_mode_deleted
- fb_mode_is_equal
- mode_string
- show_mode
- fb_destroy_modelist
- fbcon_delete_modelist
- KASAN: use-after-free
- BUG: KASAN: use-after-free
- general protection fault
- kernel BUG at drivers/video/fbdev
- drivers/video/fbdev/core/fbsysfs.c
- drivers/video/fbdev/core/fbcon.c
What your security team should do
- Prioritize kernel updates for systems that expose local framebuffer access, including workstations, kiosks, embedded Linux devices, appliances, and systems with local multi-user access.
- Inventory systems with /dev/fb* devices and active fbcon/fbdev support to determine practical exposure.
- Restrict permissions on framebuffer devices and relevant sysfs attributes so only trusted administrative users can manipulate framebuffer modes.
- Monitor for kernel oops or panic events involving fbdev, fbcon, store_modes(), fbcon_mode_deleted(), fb_mode_is_equal(), show_mode(), or mode_string().
- Review recent local user activity on systems that experienced unexplained kernel crashes involving framebuffer code paths.
- If framebuffer support is not required, disable or blacklist unnecessary fbdev/fbcon components according to platform supportability requirements.
- Track vendor advisories because exact fixed versions vary by Linux distribution and kernel branch.
The record
In the Linux kernel, the following vulnerability has been resolved: fbdev: fix use-after-free in store_modes() store_modes() replaces a framebuffer's modelist with modes from userspace. On success it frees the old modelist with fb_destroy_modelist(). Two fields still point into that freed list. One pointer is fb_display[i].mode, the mode a console is using. fbcon_new_modelist() moves these pointers to the new list. It only does so for consoles still mapped to the framebuffer. An unmapped console is skipped and keeps its stale pointer. Unbinding fbcon, for example, sets con2fb_map[i] to -1 but leaves fb_display[i].mode set. An FBIOPUT_VSCREENINFO ioctl with FB_ACTIVATE_INV_MODE later reaches fbcon_mode_deleted(). That function reads the stale fb_display[i].mode through fb_mode_is_equal(). The read is a use-after-free. The other pointer is fb_info->mode, the current mode. It is set through the mode sysfs attribute. store_modes() does not update fb_info->mode, so it is left pointing into the freed list. show_mode(), the attribute's read handler, dereferences the stale fb_info->mode through mode_string(). The read is a use-after-free. Clear both pointers before freeing the list. Commit a1f305893074 ("fbcon: Set fb_display[i]->mode to NULL when the mode is released") added the helper fbcon_delete_modelist(). It clears every fb_display[i].mode that points into a given list. So far it is called only from the unregister path. Call it from store_modes() too, and set fb_info->mode to NULL.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|