CVE-2026-64496 in Linux
Сводка
по VulDB • 25.07.2026
В ядре Linux устранена следующая уязвимость:
iio: event: исправлена гонка при сбросе очереди событий (event FIFO)
Функция `iio_event_getfd()` создает файловый дескриптор события с помощью `anon_inode_getfd()`, который выделяет новый fd, создает анонимный файл и устанавливает его в таблице файловых дескрипторов процесса перед возвратом вызывающей стороне.
Код IIO выполняет сброс очереди событий (event FIFO) после возврата из `anon_inode_getfd()`, но до того момента, как `IIO_GET_EVENT_FD_IOCTL` скопирует номер fd в пространство пользователя. Однако поскольку таблицы файловых дескрипторов разделяются между потоками, другой поток может угадать только что выделенный номер fd и выполнить операцию `read()` сразу после установки fd.
Это означает, что функция `kfifo_to_user()`, вызываемая из `iio_event_chrdev_read()`, может выполняться параллельно с функцией `kfifo_reset_out()` в `iio_event_getfd()`.
Документация по kfifo указывает, что `kfifo_reset_out()` безопасна только тогда, когда она вызывается из потока-читателя и существует только один одновременный читатель. В противном случае это опасно, и ее необходимо обрабатывать так же, как `kfifo_reset()`.
Если такое происходит, функция `kfifo_to_user()` может увеличить индекс выхода (`out`) очереди FIFO на основе состояния до сброса, хотя после сброса индекс `out` уже был перемещен к текущему индексу входа (`in`). Это может привести к тому, что индекс `out` окажется больше индекса `in`. Последующий вызов `read()` может обнаружить отрицательную длину очереди FIFO (underflow) и скопировать данных больше, чем содержится в буфере очереди событий. Это может вызвать чтение за пределами допустимой области памяти (out-of-bounds read) и привести к утечке соседней памяти ядра в пространство пользователя.
Переместите сброс очереди FIFO перед вызовом `anon_inode_getfd()`. На этом этапе файловый дескриптор события помечен как занятый, но новый fd еще не установлен, поэтому пользовательское пространство не может получить доступ к нему во время сброса очереди FIFO.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.