CVE-2026-80747 в Linux Kernel: OOB-чтение в amdkfd, уязвимые версии и защита

CVE: CVE-2026-80747
Продукт: Linux Kernel
Дата публикации: 03.09.2026
Критичность: HIGH
CVSS: 8.0 (3.1)
EPSS: 0,16%; процентиль 5,85%
CISA KEV: нет подтверждения в каталоге CISA KEV

Краткое описание​


В драйвере drm/amdkfd ядра Linux обнаружена ошибка проверки границ при парсинге таблиц CRAT. Злоупотребление позволяет выполнить чтение за пределами выделенной области памяти (out-of-bounds read), что может привести к утечке данных или отказу в обслуживании. Статья разбирает механику уязвимости, затронутые компоненты и способы проверки наличия исправления.

Основные характеристики​


Уязвимость затрагивает подсистему управления GPU (amdkfd) и связана с недостаточной валидацией данных из внешнего источника (CRAT-таблицы). Ошибка позволяет атакующему с локальным доступом инициировать чтение за границами буфера, что нарушает целостность и конфиденциальность данных ядра.

  • Тип ошибки: Out-of-bounds read (чтение за границами буфера).
  • CVSS 3.1: 8.0 (HIGH). Вектор: CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:H. Оценки отражают высокий риск утечки данных и отказа в обслуживании при локальной атаке.
  • Условия атаки: Локальный доступ (AV:L), отсутствие необходимости в повышении привилегий (PR:N) или взаимодействии пользователя (UI:N).
  • Эксплуатация: Публичные данные о массовой эксплуатации отсутствуют. EPSS составляет 0,16% (0,00164), что указывает на низкую вероятность эксплуатации в ближайшем будущем.
  • CISA KEV: Уязвимость не включена в каталог Known Exploited Vulnerabilities.

Какие продукты и версии затронуты​


Уязвимость затрагивает ядра Linux, содержащие драйвер drm/amdkfd без исправления, добавленного в коммитах 6e7566ba4739dd573c331adde1c96690f7a567bd и ca91e0cc8087568e4b791648a7c01e804f48cb73.

  • Компонент: drivers/gpu/drm/amd/amdkfd/kfd_crat.c.
  • Функция: kfd_parse_crat_table() и kfd_parse_subtype().
  • Версии: Точный список уязвимых версий ядра не указан в предоставленных источниках. Рекомендуется проверить наличие указанных коммитов в истории ядра вашей системы.
  • Платформы: Системы с GPU AMD, использующие драйвер amdkfd для управления вычислениями на GPU.

Причина уязвимости​


Причина уязвимости кроется в неполной валидации структуры данных CRAT (Compute Resource Allocation Table) в функции kfd_parse_crat_table(). Парсер проверяет, что заголовок подтипа (subtype header) помещается в пределах изображения (image), но не проверяет, что объявленная длина подтипа (subtype length) не превышает доступную память.

Когда kfd_parse_subtype() пытается привести (cast) заголовок к конкретной структуре подтипа, он использует поле length из недоверенных данных. Если это поле содержит завышенное значение, происходит чтение за границами выделенного буфера (out-of-bounds read). Это нарушает границу доверия между внешними данными (CRAT-таблицей) и внутренней памятью ядра.

Как работает атака​


Атакующий с локальным доступом может сформировать или подменить CRAT-таблицу, содержащую некорректное поле length в заголовке подтипа. При инициализации или пересоздании контекста amdkfd ядро вызывает kfd_parse_crat_table(), который обрабатывает эту таблицу.

Парсер проходит по подтипам, и для каждого проверяет только наличие заголовка в пределах изображения. Затем, если флаг CRAT_SUBTYPE_FLAGS_ENABLED установлен, вызывается kfd_parse_subtype(). Эта функция использует значение length для определения размера данных, которые нужно прочитать.

Поскольку проверка sub_type_hdr + length <= image_boundary отсутствует, ядро читает память за пределами CRAT-изображения. Это потенциально раскрывает данные других процессов или вызывает сбой (segfault) в ядре.

Условия успешной эксплуатации​


Для успешной эксплуатации уязвимости необходимо выполнение следующих условий:

  • Локальный доступ: Атакующий должен иметь возможность запускать процессы на целевой системе (AV:L).
  • Наличие драйвера amdkfd: Система должна использовать GPU AMD с драйвером drm/amdkfd, который обрабатывает CRAT-таблицы.
  • Возможность подачи данных: Атакующий должен иметь возможность влиять на содержимое CRAT-таблицы, например, через создание специального контекста или подмену данных, если архитектура позволяет это без root-прав (PR:N).
  • Отсутствие исправления: Ядро должно не содержать коммитов 6e7566ba4739dd573c331adde1c96690f7a567bd и ca91e0cc8087568e4b791648a7c01e804f48cb73.

Возможный сценарий атаки​


Сценарий атаки предполагает, что атакующий с правами обычного пользователя создает контекст amdkfd, который инициирует парсинг CRAT-таблицы. В этой таблице содержится подтип с завышенным значением поля length.

При обработке таблицы функция kfd_parse_crat_table() не обнаруживает ошибку, так как заголовок подтипа формально находится в пределах изображения. Далее вызывается kfd_parse_subtype(), который пытается прочитать данные подтипа, используя завышенную длину.

Это приводит к чтению памяти за пределами CRAT-буфера. В результате атакующий может получить доступ к данным, хранящимся в смежных областях памяти ядра, или вызвать сбой ядра, что приведет к отказу в обслуживании (DoS).

Есть ли публичный эксплойт​


На момент публикации статьи публичные PoC (proof-of-concept) или подтвержденные эксплойты для CVE-2026-80747 не обнаружены в предоставленных источниках. Уязвимость имеет статус «Received» в NVD, что означает, что она недавно зарегистрирована и еще не прошла полный процесс оценки.

Отсутствие публичного эксплойта не гарантирует, что уязвимость не может быть эксплуатирована. Учитывая локальный вектор атаки и отсутствие необходимости в повышении привилегий, риск эксплуатации в целевых средах с GPU AMD остается. Рекомендуется отслеживать обновления от поставщиков дистрибутивов Linux.

Признаки эксплуатации​


Специфичные индикаторы компрометации (IOC) для CVE-2026-80747 в предоставленных источниках не описаны. Однако можно использовать следующие общие, неспецифичные признаки для мониторинга:

  • Сбои ядра: Записи в dmesg или journalctl о segfault или page fault в модуле amdkfd или kfd.
  • Аномальные процессы: Внезапное завершение процессов, использующих GPU, без видимой причины.
  • Неожиданные ошибки: Сообщения об ошибках при инициализации контекстов amdkfd, связанные с валидацией CRAT-таблиц.

Эти признаки не являются уникальными для данной уязвимости и могут указывать на другие проблемы с драйвером GPU.

Как обнаружить атаку​


Для обнаружения потенциальной эксплуатации или наличия уязвимости рекомендуется:

  • Проверка версии ядра: Убедитесь, что ядро содержит исправления (см. раздел «Проверка версии»). Если исправления отсутствуют, система уязвима.
  • Мониторинг логов: Настройте сбор логов ядра (dmesg, journalctl) и ищите ошибки, связанные с amdkfd или kfd_crat.c. В частности, после применения исправления в логах могут появляться предупреждения CRAT subtype length %u exceeds image bounds, что свидетельствует о попытке атаки или некорректных данных.
  • Аудит доступа к GPU: Отслеживайте процессы, создающие amdkfd-контексты, особенно если они запускаются от имени непривилегированных пользователей в средах, где это не ожидается.

Как проверить свою версию​


Для проверки версии ядра и наличия исправлений используйте следующие команды:

Bash:
uname -r
uname -a
cat /proc/version

Полученную версию ядра необходимо сверить с официальными списками исправлений от вашего дистрибутива Linux. Если вы используете ядро из исходников, проверьте наличие коммитов 6e7566ba4739dd573c331adde1c96690f7a567bd и ca91e0cc8087568e4b791648a7c01e804f48cb73 в истории git:

Bash:
git log --oneline | grep -E "6e7566ba4739dd573c331adde1c96690f7a567bd|ca91e0cc8087568e4b791648a7c01e804f48cb73"

Если коммиты отсутствуют, система уязвима.

Исправление​


Основным способом устранения уязвимости является обновление ядра Linux до версии, содержащей исправления.

  • Обновление ядра: Установите последнюю доступную версию ядра от вашего дистрибутива. Убедитесь, что в ней присутствуют коммиты 6e7566ba4739dd573c331adde1c96690f7a567bd и ca91e0cc8087568e4b791648a7c01e804f48cb73.
  • Перезагрузка: После обновления ядра выполните перезагрузку системы для применения новых модулей.
  • Проверка: После перезагрузки убедитесь, что новая версия ядра активна и содержит исправления (см. раздел «Проверка версии»).

Временные меры защиты​


Пока обновление ядра не выполнено, можно рассмотреть следующие временные меры:

  • Ограничение доступа к GPU: Если возможно, ограничьте доступ к устройствам GPU для непривилегированных пользователей. Это снизит риск локальной атаки.
  • Отключение amdkfd: Если функциональность amdkfd не критична, рассмотрите возможность отключения драйвера или модуля amdkfd (если это поддерживается конфигурацией ядра). Однако это может повлиять на работу GPU-вычислений.
  • Мониторинг: Усиленный мониторинг логов ядра на предмет аномалий, связанных с amdkfd.

Эти меры не устраняют уязвимость, но снижают вероятность успешной атаки.

Как проверить устранение уязвимости​


Для проверки успешного применения исправления:

  1. Убедитесь, что система работает на обновленной версии ядра:

    Bash:
    uname -r
  2. Проверьте наличие коммитов в истории ядра (если доступно):

    Bash:
    git log --oneline | grep -E "6e7566ba4739dd573c331adde1c96690f7a567bd|ca91e0cc8087568e4b791648a7c01e804f48cb73"
  3. Проверьте логи ядра после инициализации amdkfd на наличие предупреждений CRAT subtype length %u exceeds image bounds. Их появление свидетельствует о том, что проверка работает и потенциально некорректные данные были отклонены.

Если все проверки пройдены, уязвимость считается устраненной.

Вывод​


CVE-2026-80747 представляет собой серьезную уязвимость в драйвере drm/amdkfd ядра Linux, связанную с out-of-bounds read при парсинге CRAT-таблиц. Несмотря на локальный вектор атаки, она может привести к утечке данных или отказу в обслуживании.

Рекомендуется как можно скорее обновить ядро до версии, содержащей исправления, и проверить его наличие. Для систем, где обновление отложено, следует применить временные меры по ограничению доступа к GPU и усилить мониторинг.

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


  1. NVD — CVE-2026-80747
  2. FIRST EPSS — CVE-2026-80747
  3. drm/amdkfd: Add bounds check for CRAT subtype length - kernel/git/stable/linux.git - Linux kernel stable tree
  4. drm/amdkfd: Add bounds check for CRAT subtype length - kernel/git/stable/linux.git - Linux kernel stable tree
  5. CVEs — The Linux Kernel documentation

История обновлений статьи​


  • 05.09.2026 — Опубликована первая версия материала.
 
Назад
Верх Низ