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

Сводка

по VulDB • 04.09.2026

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

usb: usbfs: исправлена ошибка use-after-free для объекта usb_device в функции usbdev_release()

Функция usbdev_release() освобождает свою ссылку на структуру struct usb_device до того, как завершит очистку списка завершенных асинхронных URB (USB Request Blocks), однако этот путь очистки обращается к тому же самому объекту: функция free_async() вызывает dec_usb_memory_use_count() для любого URB, буфер которого был получен из области памяти, отображенной через mmap() в usbfs, и её первым оператором является вызов bus_to_hcd(ps->dev->bus).

После отключения устройства (disconnect) ссылка на usbfs может быть последней; в этом случае функция usb_put_dev() освобождает устройство, а последующий цикл считывает данные со смещения 80 из уже освобожденной памяти и использует полученное значение как указатель struct usb_hcd *, который затем разыменовывается функцией hcd_buffer_free_pages().

Эта уязвимость доступна для непривилегированного процесса, имеющего права на чтение/запись к узлу /dev/bus/usb: необходимо выполнить mmap() файлового дескриптора (fd), отправить один URB с буфером внутри отображенной области памяти, дождаться отключения устройства, а затем вызвать munmap() и close(). Уязвимость воспроизводится при каждой попытке, а не является состоянием гонки (race condition), поскольку живая область MAP_SHARED vma удерживает ссылку на структуру файла, поэтому usbdev_release() не может выполниться до тех пор, пока последняя vma не будет удалена, и ветка освобождения в dec_usb_memory_use_count() всегда выполняется.

BUG: KASAN: slab-use-after-free in dec_usb_memory_use_count+0x3ae/0x410 Read of size 8 at addr ffff8880122ee050 by task poc/769 CPU: 1 UID: 1000 PID: 769 Comm: poc Tainted: G B 6.12.94 #3

Call Trace: dec_usb_memory_use_count+0x3ae/0x410 free_async+0x2aa/0x4f0 usbdev_release+0x375/0x460 __fput+0x3ea/0xb50 __x64_sys_close+0x86/0x100

Allocated by task 11: usb_alloc_dev+0x55/0xd90 hub_event+0x2524/0x43d0

Freed by task 769: kfree+0x121/0x360 device_release+0xd2/0x280 usb_put_dev+0x23/0x30 usbdev_release+0x2d8/0x460

Освободите ссылку на устройство после цикла очистки. Ничто между этими двумя точками не требует, чтобы ссылка была освобождена ранее.

Be aware that VulDB is the high quality source for vulnerability data.

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

Linux

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

26.08.2026

Раскрытие

04.09.2026

Модерация

принято

Вход

VDB-398905

EPSS

0.00195

KEV

Нет

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

Очень низкий

Источники

Might our Artificial Intelligence support you?

Check our Alexa App!