CVE: CVE-2026-64303
Продукт: Linux Kernel
Дата публикации: 25.07.2026
Критичность: CRITICAL
CVSS: 9.8 (3.1)
EPSS: 0,69%; процентиль 50,42%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В драйвере
spi-fsl-lpspi ядра Linux обнаружена ошибка обработки ошибок: при сбое подготовки TX-канала DMA RX-канал продолжает работать, что приводит к записи в уже освобождённые буферы. Статья разбирает механику дефекта, условия его проявления и безопасные команды для проверки статуса системы.Основные характеристики
Риск связан с нарушением порядка освобождения ресурсов в драйвере SPI, что может привести к повреждению памяти или use-after-free в ядре.
- Тип ошибки: Ошибка управления ресурсами (Use-After-Free / Memory Corruption). При сбое подготовки TX-канала RX-канал не останавливается, продолжая писать в буферы, которые ядро уже размаппило.
- CVSS: 9.8 (CRITICAL). Вектор:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H. Высокая оценка отражает потенциальный критический ущерб при успешной эксплуатации.
- Условия атаки: Удалённый доступ (AV:N), низкая сложность (AC:L), отсутствие необходимости в привилегиях (PR:N) и взаимодействии пользователя (UI:N).
- Эксплуатация: В каталоге CISA KEV подтверждений активной эксплуатации в дикой природе нет.
- EPSS: 0,69% (процентиль 50,42%). Вероятность эксплуатации в ближайшие 30 дней оценивается как низкая, но не нулевая.
Какие продукты и версии затронуты
Уязвимость затрагивает драйвер
spi-fsl-lpspi в ядре Linux. Точный список уязвимых версий ядра и пакетов дистрибутивов в переданных источниках не раскрыт.- Компонент:
drivers/spi/spi-fsl-lpspi.c.
- Функция:
fsl_lpspi_dma_transfer.
- Статус: Ошибка была исправлена в коммите
01980b5da56e573d62798d0ff6c86bcaa2b22cbeи портирована в стабильные ветки ядра.
Администратору необходимо сверить версию своего ядра с официальными релизами дистрибутива, чтобы убедиться в наличии данного исправления.
Причина уязвимости
Причина дефекта кроется в неправильной обработке ошибок в функции
fsl_lpspi_dma_transfer. При подготовке DMA-операции драйвер сначала отправляет RX-канал, а затем пытается подготовить TX-канал.Если вызов
dmaengine_prep_slave_sg() для TX-канала завершается ошибкой, исходный код вызывал dmaengine_terminate_sync() для TX-канала, но игнорировал RX-канал. Поскольку RX-канал уже был запущен, он продолжал писать данные в память.Возврат кода
-EINVAL приводил к тому, что SPI-ядро размаппило DMA-буферы. В результате RX-движок продолжал запись в уже освобождённую память, что вызывает повреждение данных или use-after-free.Как работает атака
Атака эксплуатирует гонку состояний между DMA-движком и управлением памятью ядра. Для реализации сценария атакующий должен инициировать SPI-транзакцию, в которой подготовка TX-канала завершится ошибкой.
В этот момент RX-канал продолжает работу. Ядро освобождает буферы, но DMA-движок продолжает запись. Это позволяет атакующему повредить критические структуры ядра или перехватить управление потоком выполнения.
Механизм требует точного контроля над условиями, при которых
dmaengine_prep_slave_sg возвращает NULL, что делает эксплуатацию сложной, но потенциально опасной.Условия успешной эксплуатации
Для успешной эксплуатации уязвимости необходимо выполнение следующих условий:
- Наличие в системе драйвера
spi-fsl-lpspiс уязвимой версией кода.
- Возможность инициирования SPI-транзакции, которая приведёт к сбою подготовки TX-канала DMA.
- Отсутствие исправления (коммита
01980b5da56e573d62798d0ff6c86bcaa2b22cbe) в текущей версии ядра.
- Доступ к интерфейсу SPI, поддерживающему DMA-режим, на целевом устройстве.
Возможный сценарий атаки
Атакующий направляет запрос к SPI-устройству, используя DMA-режим. Драйвер начинает подготовку транзакции: RX-канал запускается, затем драйвер пытается подготовить TX-канал.
Из-за специально созданных условий (например, нехватка ресурсов или некорректные параметры) подготовка TX-канала завершается ошибкой. Драйвер останавливает TX-канал, но RX-канал продолжает работу.
Ядро освобождает буферы, но RX-движок продолжает запись. Атакующий может использовать это для записи контролируемых данных в память ядра, что приводит к повышению привилегий или отказу в обслуживании.
Есть ли публичный эксплойт
Публичные эксплойты для CVE-2026-64303 в открытых источниках не обнаружены. В каталоге CISA KEV уязвимость не числится как активно эксплуатируемая.
Существуют только технические описания дефекта и патчи в репозитории ядра Linux. Отсутствие публичного PoC не гарантирует, что эксплойт не существует в закрытых базах данных.
Признаки эксплуатации
Специфичные индикаторы компрометации (IOC) для данной уязвимости в источниках не указаны. Для мониторинга можно использовать общие, неспецифичные признаки:
- Записи в
dmesgилиsyslogоб ошибках в драйвереspi-fsl-lpspi.
- Сообщения о повреждении памяти (memory corruption) или use-after-free, связанные с SPI-устройствами.
- Необъяснимые сбои или перезагрузки системы, сопровождающиеся ошибками DMA-подсистемы.
Как обнаружить атаку
Для обнаружения потенциальной эксплуатации или срабатывания уязвимости рекомендуется анализировать логи ядра. Ищите записи, связанные с драйвером
spi-fsl-lpspi и ошибками DMA.- Проверьте
dmesgна наличие сообщений об ошибках вfsl_lpspi_dma_transfer.
- Мониторьте системные логи на признаки нестабильной работы SPI-устройств.
- Используйте инструменты аудита ядра (например,
auditd) для отслеживания подозрительных операций с SPI-устройствами.
Как проверить свою версию
Для проверки версии ядра и определения необходимости обновления используйте следующие безопасные команды:
Bash:
uname -r
uname -a
cat /proc/version
Сравните полученную версию с официальными списками обновлений вашего дистрибутива Linux. Убедитесь, что в вашей версии ядра присутствует коммит
01980b5da56e573d62798d0ff6c86bcaa2b22cbe.Исправление
Единственным подтверждённым способом устранения уязвимости является обновление ядра Linux до версии, содержащей исправление. Патч заменяет вызов
dmaengine_terminate_sync(controller->dma_tx) на dmaengine_terminate_sync(controller->dma_rx) в функции fsl_lpspi_dma_transfer.- Обновите ядро через штатные механизмы пакетного менеджера вашего дистрибутива.
- После обновления перезагрузите систему для применения нового ядра.
- Проверьте, что драйвер
spi-fsl-lpspiзагружен с исправленным кодом.
Временные меры защиты
Пока обновление ядра не установлено, можно рассмотреть следующие временные меры:
- Отключите использование DMA-режима в драйвере
spi-fsl-lpspi, если это позволяет конфигурация устройства.
- Ограничьте доступ к SPI-устройствам, которые используют данный драйвер, доверенным процессам.
- Убедитесь, что SPI-устройства не используются для критически важных операций, если вы не можете гарантировать целостность DMA-операций.
Как проверить устранение уязвимости
После обновления ядра необходимо убедиться, что исправление применено. Проверьте версию ядра с помощью
uname -r и сверьте её с официальными релизами.- Убедитесь, что в логах загрузки ядра нет ошибок, связанных с
spi-fsl-lpspi.
- Проведите функциональное тестирование SPI-устройств, чтобы убедиться в их корректной работе после обновления.
- Проверьте, что коммит
01980b5da56e573d62798d0ff6c86bcaa2b22cbeприсутствует в истории вашего ядра (если доступно черезgit logили инструменты аудита).
Вывод
CVE-2026-64303 представляет собой критическую уязвимость в драйвере SPI, способную привести к повреждению памяти ядра. Хотя публичные эксплойты отсутствуют, риск остаётся высоким из-за потенциальных последствий.
Администраторам необходимо срочно обновить ядро Linux до версии, содержащей исправление, и проверить работоспособность SPI-устройств после обновления. Регулярный мониторинг логов ядра поможет выявить ранние признаки проблем.
Официальные источники
- NVD — CVE-2026-64303
- FIRST EPSS — CVE-2026-64303
- spi: fsl-lpspi: terminate the RX channel on TX prepare failure path - kernel/git/stable/linux.git - Linux kernel stable tree
- spi: fsl-lpspi: terminate the RX channel on TX prepare failure path - kernel/git/stable/linux.git - Linux kernel stable tree
- spi: fsl-lpspi: terminate the RX channel on TX prepare failure path - kernel/git/stable/linux.git - Linux kernel stable tree
- spi: fsl-lpspi: terminate the RX channel on TX prepare failure path - kernel/git/stable/linux.git - Linux kernel stable tree
- spi: fsl-lpspi: terminate the RX channel on TX prepare failure path - kernel/git/stable/linux.git - Linux kernel stable tree
- spi: fsl-lpspi: terminate the RX channel on TX prepare failure path - kernel/git/stable/linux.git - Linux kernel stable tree
- spi: fsl-lpspi: terminate the RX channel on TX prepare failure path - kernel/git/stable/linux.git - Linux kernel stable tree
- spi: fsl-lpspi: terminate the RX channel on TX prepare failure path - kernel/git/stable/linux.git - Linux kernel stable tree
История обновлений статьи
- 06.08.2026 — Опубликована первая версия материала.
- 12.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
- 31.08.2026 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
Последнее редактирование:
