CVE-2025-40323

CVE-2025-40323

High · published December 8, 2025

CVSS v3.1
7.8
EPSS
0%
Percentile
3.1
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

fbcon: Set fb_display[i]->mode to NULL when the mode is released

Recently, we discovered the following issue through syzkaller:

BUG: KASAN: slab-use-after-free in fb_mode_is_equal+0x285/0x2f0

Read of size 4 at addr ff11000001b3c69c by task syz.xxx

...

Call Trace:

<TASK>

dump_stack_lvl+0xab/0xe0

print_address_description.constprop.0+0x2c/0x390

print_report+0xb9/0x280

kasan_report+0xb8/0xf0

fb_mode_is_equal+0x285/0x2f0

fbcon_mode_deleted+0x129/0x180

fb_set_var+0xe7f/0x11d0

do_fb_ioctl+0x6a0/0x750

fb_ioctl+0xe0/0x140

__x64_sys_ioctl+0x193/0x210

do_syscall_64+0x5f/0x9c0

entry_SYSCALL_64_after_hwframe+0x76/0x7e

Based on experimentation and analysis, during framebuffer unregistration,

only the memory of fb_info->modelist is freed, without setting the

corresponding fb_display[i]->mode to NULL for the freed modes. This leads

to UAF issues during subsequent accesses. Here's an example of reproduction

steps:

1. With /dev/fb0 already registered in the system, load a kernel module

to register a new device /dev/fb1;

2. Set fb1's mode to the global fb_display[] array (via FBIOPUT_CON2FBMAP);

3. Switch console from fb to VGA (to allow normal rmmod of the ko);

4. Unload the kernel module, at this point fb1's modelist is freed, leaving

a wild pointer in fb_display[];

5. Trigger the bug via system calls through fb0 attempting to delete a mode

from fb0.

Add a check in do_unregister_framebuffer(): if the mode to be freed exists

in fb_display[], set the corresponding mode pointer to NULL.

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00140 · 3.1th percentile
Published
2025-12-08T06:16Z
References (6)
EPSS history
Timeline
  • 08 DEC 00:46Z
    fbcon: Set fb_display[i]->mode to NULL when the mode is released
    cvelistv5