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.
Эти меры не устраняют уязвимость, но снижают вероятность успешной атаки.
Как проверить устранение уязвимости
Для проверки успешного применения исправления:
- Убедитесь, что система работает на обновленной версии ядра:
Bash:uname -r - Проверьте наличие коммитов в истории ядра (если доступно):
Bash:git log --oneline | grep -E "6e7566ba4739dd573c331adde1c96690f7a567bd|ca91e0cc8087568e4b791648a7c01e804f48cb73" - Проверьте логи ядра после инициализации amdkfd на наличие предупреждений
CRAT subtype length %u exceeds image bounds. Их появление свидетельствует о том, что проверка работает и потенциально некорректные данные были отклонены.
Если все проверки пройдены, уязвимость считается устраненной.
Вывод
CVE-2026-80747 представляет собой серьезную уязвимость в драйвере
drm/amdkfd ядра Linux, связанную с out-of-bounds read при парсинге CRAT-таблиц. Несмотря на локальный вектор атаки, она может привести к утечке данных или отказу в обслуживании.Рекомендуется как можно скорее обновить ядро до версии, содержащей исправления, и проверить его наличие. Для систем, где обновление отложено, следует применить временные меры по ограничению доступа к GPU и усилить мониторинг.
Официальные источники
- NVD — CVE-2026-80747
- FIRST EPSS — CVE-2026-80747
- drm/amdkfd: Add bounds check for CRAT subtype length - kernel/git/stable/linux.git - Linux kernel stable tree
- drm/amdkfd: Add bounds check for CRAT subtype length - kernel/git/stable/linux.git - Linux kernel stable tree
- CVEs — The Linux Kernel documentation
История обновлений статьи
- 05.09.2026 — Опубликована первая версия материала.
