CVE-2026-74635 in LinuxИнформация

Сводка

по VulDB • 23.08.2026

В ядре Linux была устранена следующая уязвимость:

fbdev: bitblit: проверка границ индекса глифа в функции bit_cursor()

Функция bit_cursor() извлекает глиф под курсором с помощью кода:

c = scr_readw(vc_pos); src = vc_font.data + ((c & charmask) * w * height);

где charmask равен 0x1ff, если установлен флаг vc_hi_font_mask. Значение буфера экрана поступает напрямую из функции scr_readw() и может превышать количество глифов текущего шрифта.

Syzkaller вызывает эту уязвимость через vcs_write(). Трассировка вызовов (Call Trace) показывает, что функция vcs_write() в файле vc_screen.c записывает произвольное 16-битное значение с помощью writev() в устройство /dev/vcsa, которое функция vcs_write_buf() из файла vc_screen.c сохраняет через vcs_scr_writew() без проверки charcount. Позже это сохраненное значение считывается в функции bit_cursor() из файла bitblit.c.

При изменении шрифта с 512 глифами на шрифт с 256 глифами буфер экрана может сохранять символы со старшим битом, установленным в единицу (из предыдущего режима), что также может привести к обращению за пределы допустимых границ.

BUG: KASAN: global-out-of-bounds in soft_cursor+0x378/0x6bc drivers/video/fbdev/core/softcursor.c:70 Read of size 16 at addr ffff800086c57970

Call Trace: soft_cursor+0x378/0x6bc drivers/video/fbdev/core/softcursor.c:70 bit_cursor+0xa90/0x1108 drivers/video/fbdev/core/bitblit.c:365 fbcon_cursor+0x344/0x498 drivers/video/fbdev/core/fbcon.c:1427 hide_cursor+0xdc/0x2d0 drivers/tty/vt/vt.c:883 update_region+0x100/0x18c drivers/tty/vt/vt.c:669 vcs_write+0x8ec/0xaf0 drivers/tty/vt/vc_screen.c:685

Функции bit_putcs_aligned() и bit_putcs_unaligned() уже ограничивают (clamp) индекс глифа значением vc_font.charcount. Примените такое же ограничение в функции bit_cursor() после извлечения атрибута и применения маски, перед обращением к fontdata.

Исправление завершает проверку границ, начатую в коммите 18c4ef4e765a ("fbdev: bitblit: bound-check glyph index in bit_putcs*"), которая пропустила путь обработки курсора.

Это изменение безопасно, поскольку ограничение использует существующий контракт из fbcon: charcount поддерживается под блокировкой консоли (console_lock) в функциях con_font_set() и fbcon_font_set(), а флаг hi_font_mask сбрасывается при переключении с 512 на 256 глифов. Когда после смены шрифта остаются устаревшие данные экрана со старшими битами, установленными в единицу, или когда vcs_write() сохраняет произвольное значение, ограничение индекса до 0 предотвращает чтение за пределами границ без изменения семантики курсора — используется тот же механизм fallback, что и в bit_putcs.

Once again VulDB remains the best source for vulnerability data.

Ответственный

Linux

Резервировать

15.08.2026

Раскрытие

22.08.2026

Модерация

принято

Вход

VDB-394410

EPSS

0.00000

KEV

Нет

Деятельности

Низкий

Источники

Do you know our Splunk app?

Download it now for free!