CVE: CVE-2026-72476
Продукт: Linux Kernel
Дата публикации: 15.08.2026
Критичность: не определена
CVSS: нет данных
EPSS: 0,22%; процентиль 12,78%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
CVE-2026-72476 описывает ошибку Use-After-Free в подсистеме dmaengine ядра Linux. В функции dma_release_channel() вызов dma_chan_put() происходил до проверки поля privatecnt структуры устройства. Это могло привести к преждевременному освобождению памяти устройства, если провайдер DMA был удален, и последующему обращению по висячему указателю. Уязвимость исправлена перемещением вызова dma_chan_put() после проверки.
Основные характеристики
Тип: Use-After-Free (UAF) в ядре Linux.
Компонент: Подсистема dmaengine (файл drivers/dma/dmaengine.c).
Функция: dma_release_channel().
Суть ошибки: Неправильный порядок операций при освобождении канала DMA. Вызов dma_chan_put() мог освободить структуру устройства до того, как код проверил поле privatecnt.
Исправление: Перемещение вызова dma_chan_put() после блока проверки privatecnt.
Статус: Исправлено в стабильных ветках ядра (stable tree).
Какие продукты и версии затронуты
Linux Kernel.
Уязвимы версии, содержащие коммит 0f571515c332 («dmaengine: Add privatecnt to revert DMA_PRIVATE property»), но не содержащие исправляющий коммит 92f853f0645aebf1d05d333e97ab7c342ace1892.
Точные диапазоны версий зависят от дистрибутива. Патч был применен в различные ветки stable (включая 6.6.y, 6.1.y и другие) в июле 2026 года. Информация о конкретных затронутых версиях дистрибутивов в предоставленных источниках отсутствует.
Причина уязвимости
В функции dma_release_channel() код выполнял проверку chan->device->privatecnt после вызова dma_chan_put(). Функция dma_chan_put() уменьшает счетчик ссылок и вызывает dma_device_put(). Если провайдер DMA был уже удален, dma_device_put() могла освободить последнюю ссылку на структуру dma_device. Последующий доступ к chan->device->privatecnt обращался к освобожденной памяти, что приводило к Use-After-Free.
Как работает атака
Эксплуатация требует совпадения событий: освобождение канала DMA (вызов dma_release_channel) должно происходить одновременно с удалением провайдера DMA. При этом счетчик ссылок на устройство падает до нуля внутри dma_chan_put(), освобождая память. Затем код пытается прочитать поле privatecnt из этой памяти. Если атакующий контролирует переназначенную память, возможно выполнение кода в контексте ядра или вызов Kernel Panic.
Условия успешной эксплуатации
- Доступ к управлению устройствами DMA или модулями ядра (обычно root/CAP_SYS_ADMIN).
- Наличие оборудования или виртуальных устройств, использующих dmaengine.
- Возможность спровоцировать гонку условий между освобождением канала и удалением провайдера.
- Контроль над переназначением памяти (heap spray) для потенциального повышения привилегий.
Возможный сценарий атаки
- Загрузка или активация модуля драйвера DMA.
- Запрос канала DMA.
- Инициация освобождения канала (например, при выгрузке модуля) одновременно с удалением провайдера DMA.
- Преждевременное освобождение структуры dma_device из-за ошибки в порядке вызовов.
- Обращение к chan->device->privatecnt по висячему указателю.
- При успешном контроле памяти — выполнение произвольного кода в ядре или отказ в обслуживании.
Есть ли публичный эксплойт
Публичные эксплойты или PoC-код для CVE-2026-72476 не зафиксированы. Уязвимость была обнаружена и исправлена в рамках разработки ядра. EPSS-оценка составляет 0.22% (процентиль 12.77%), что указывает на низкую вероятность эксплуатации.
Признаки эксплуатации
Специфичных IOC для CVE-2026-72476 нет. Общие признаки эксплуатации UAF в ядре:
- Нестабильность системы, случайные Kernel Panic.
- Сообщения «BUG: KASAN: use-after-free» в dmesg (если включен KASAN).
- Ошибки работы драйверов DMA.
Эти признаки неспецифичны и могут быть вызваны другими причинами.
Как обнаружить атаку
Основной метод — проверка версии ядра и наличия патча.
- Проверка версии: uname -r
- Поиск ошибок памяти в журналах: dmesg | grep -i "use-after-free"
- Анализ логов KASAN (если ядро собрано с KASAN): dmesg | grep -i "kasan"
- Проверка changelog пакета ядра на наличие упоминания CVE-2026-72476 или коммита 92f853f0645aebf1d05d333e97ab7c342ace1892.
Как проверить свою версию
Для проверки версии установленного ядра Linux используйте:
Bash:
uname -r
uname -a
cat /proc/version
Сравните версию с официальными списками уязвимых версий дистрибутива. Если версия ниже той, в которую применен патч 92f853f0645aebf1d05d333e97ab7c342ace1892, система уязвима.
Исправление
Обновите ядро Linux до версии, содержащей исправление CVE-2026-72476.
Bash:
# Debian/Ubuntu
sudo apt update
sudo apt upgrade linux-image-generic
# RHEL/CentOS/Fedora
sudo dnf update kernel
# Arch Linux
sudo pacman -Syu linux
Перезагрузите систему после обновления.
Временные меры защиты
Прямых временных смягчающих мер для этой ошибки в dmaengine нет. Можно снизить риск:
- Ограничить доступ к загрузке/выгрузке модулей ядра.
- Отключить неиспользуемые устройства DMA.
- Использовать ядра с включенным KASAN или KCFI (в основном для отладки).
Как проверить устранение уязвимости
После обновления проверьте версию ядра:
Bash:
uname -r
Убедитесь, что версия соответствует исправленной. Проверьте changelog пакета ядра на наличие упоминания CVE-2026-72476 или коммита 92f853f0645aebf1d05d333e97ab7c342ace1892.
Вывод
CVE-2026-72476 — Use-After-Free в dmaengine ядра Linux. Риск эксплуатации низок, но возможна компрометация ядра. Рекомендуется обновление до версий с исправлением. Администраторам следует мониторить журналы ядра на предмет ошибок памяти.
Официальные источники
- NVD — CVE-2026-72476
- FIRST EPSS — CVE-2026-72476
- dmaengine: Fix possible use after free - kernel/git/stable/linux.git - Linux kernel stable tree
- dmaengine: Fix possible use after free - kernel/git/stable/linux.git - Linux kernel stable tree
- dmaengine: Fix possible use after free - kernel/git/stable/linux.git - Linux kernel stable tree
- dmaengine: Fix possible use after free - kernel/git/stable/linux.git - Linux kernel stable tree
- dmaengine: Fix possible use after free - kernel/git/stable/linux.git - Linux kernel stable tree
- dmaengine: Fix possible use after free - kernel/git/stable/linux.git - Linux kernel stable tree
- dmaengine: Fix possible use after free - kernel/git/stable/linux.git - Linux kernel stable tree
- dmaengine: Fix possible use after free - kernel/git/stable/linux.git - Linux kernel stable tree
История обновлений статьи
- 17.08.2026 — Опубликована первая версия материала.
