CVE-2026-64303 в Linux Kernel: риск повреждения памяти в SPI-драйвере и порядок проверки

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-устройств после обновления. Регулярный мониторинг логов ядра поможет выявить ранние признаки проблем.

Официальные источники​


  1. NVD — CVE-2026-64303
  2. FIRST EPSS — CVE-2026-64303
  3. spi: fsl-lpspi: terminate the RX channel on TX prepare failure path - kernel/git/stable/linux.git - Linux kernel stable tree
  4. spi: fsl-lpspi: terminate the RX channel on TX prepare failure path - kernel/git/stable/linux.git - Linux kernel stable tree
  5. spi: fsl-lpspi: terminate the RX channel on TX prepare failure path - kernel/git/stable/linux.git - Linux kernel stable tree
  6. spi: fsl-lpspi: terminate the RX channel on TX prepare failure path - kernel/git/stable/linux.git - Linux kernel stable tree
  7. spi: fsl-lpspi: terminate the RX channel on TX prepare failure path - kernel/git/stable/linux.git - Linux kernel stable tree
  8. spi: fsl-lpspi: terminate the RX channel on TX prepare failure path - kernel/git/stable/linux.git - Linux kernel stable tree
  9. spi: fsl-lpspi: terminate the RX channel on TX prepare failure path - kernel/git/stable/linux.git - Linux kernel stable tree
  10. 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 — Уточнены сведения об уязвимых версиях, оценке риска или исправлении.
 
Последнее редактирование:
Назад
Верх Низ