В ядре Linux устранена следующая уязвимость:
gpib: исправлено двойное уменьшение descriptor_busy в Command_ioctl().
commit d1857f8296dc («gpib: исправлено использование после освобождения в обработчиках ввода-вывода ioctl»)
введен счетчик ссылок descriptor_busy для закрепления структуры
gpib_descriptor для операций ввода-вывода ioctl. В command_ioctl()
путь ошибки внутри цикла уменьшает descriptor_busy и прерывается, но
выполнение затем переходит к безусловному декременту после
цикл, опустошая счетчик до -1. Это снова включает использование после освобождения, для которого предполагалось исходное исправление.
предотвратить: одновременный вызов close_dev_ioctl() видит descriptor_busy == 0 на
активно используемый дескриптор и освобождает его.
Удалите ранний декремент из пути ошибки. Пост-петля
декремент уже обрабатывает все пути выхода, соответствующие правильному шаблону
используется в read_ioctl() и write_ioctl().
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: gpib: fix double decrement of descriptor_busy in command_ioctl() commit d1857f8296dc ("gpib: fix use-after-free in IO ioctl handlers") introduced a descriptor_busy reference counter to pin struct gpib_descriptor across IO ioctl operations. In command_ioctl(), the error path inside the loop decrements descriptor_busy and breaks, but execution then falls through to the unconditional decrement after the loop, underflowing the counter to -1. This re-enables the use-after-free that the original fix was meant to prevent: a concurrent close_dev_ioctl() sees descriptor_busy == 0 on an actively-used descriptor and frees it. Remove the early decrement from the error path. The post-loop decrement already handles all exit paths, matching the correct pattern used in read_ioctl() and write_ioctl().
Характеристики атаки
Последствия
Строка CVSS v3.1
Уязвимые продукты 4
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
6.18.22
|
6.18.40
|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
7.0
|
7.1.5
|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
7.0
|
7.2-rc1
|
|
Linux Linux_Kernel
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
|
6.19.12
|
— |