CVE: CVE-2026-80751
Продукт: Linux Kernel
Дата публикации: 03.09.2026
Критичность: HIGH
CVSS: 7.8 (3.1)
EPSS: 0,15%; процентиль 4,84%
CISA KEV: нет подтверждения в каталоге CISA KEV
Краткое описание
В драйвере
drivers/pmdomain/mediatek/mtk-mfg-pmdomain.c обнаружена ошибка чтения неинициализированной переменной prev_o в функции mtk_mfg_attach_dev(). На первой итерации цикла код обращается к указателю до его присвоения, что может привести к обрыву ядра или некорректной обработке OPP. Ошибка исправлена в стабильных ветках ядра.Статья описывает механику дефекта, условия эксплуатации и способы проверки исправления.
Основные характеристики
Риск связан с чтением неинициализированной локальной переменной в коде ядра. При определенных условиях это может вызвать сбой ядра или логическую ошибку в подсистеме управления питанием.
- Тип ошибки: Чтение неинициализированной переменной (Uninitialized Variable Read). Дефект обнаружен статическим анализатором Clang.
- CVSS 3.1: 7.8 (HIGH). Вектор:
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H. Оценки отражают потенциальный полный компромисс конфиденциальности, целостности и доступности при успешной эксплуатации.
- Условия атаки: Локальный доступ (AV:L), низкие привилегии (PR:L), отсутствие необходимости взаимодействия пользователя (UI:N).
- Эксплуатация: Публичные данные о подтвержденной эксплуатации в реальных атаках отсутствуют.
- EPSS: 0,154% (0.00154). Вероятность эксплуатации в ближайшие 30 дней оценивается как очень низкая.
Какие продукты и версии затронуты
Уязвимость затрагивает ядра Linux, в которых включен драйвер
drivers/pmdomain/mediatek/mtk-mfg-pmdomain.c. Ошибка была введена в коммите f08e7a4e8d6ac ("pmdomain: mediatek: Add support for MFlexGraphics").- Компонент: Драйвер pmdomain для MediaTek (
mtk-mfg-pmdomain.c).
- Функция:
mtk_mfg_attach_dev().
- Статус исправления: Патч применен в стабильных ветках ядра (stable tree). Точные номера версий, в которых отсутствует уязвимость, зависят от дистрибутива и политики поддержки. Рекомендуется сверяться с официальными обновлениями вашего дистрибутива Linux.
Причина уязвимости
Причина ошибки заключается в отсутствии инициализации локальной переменной
prev_o в функции mtk_mfg_attach_dev(). Переменная объявляется как struct dev_pm_opp_data *prev_o; без начального значения.В цикле, обрабатывающем OPP (Operating Performance Points), код содержит условие
if (prev_o && prev_o->freq == o->freq). На первой итерации цикла переменная prev_o еще не была присвоена значением в конце предыдущей итерации (так как предыдущей итерации не было). В результате чтение prev_o возвращает неопределенное значение из стека.Если это значение окажется ненулевым, условие
prev_o->freq приведет к разыменованию невалидного или устаревшего указателя. Это может вызвать сбой ядра (kernel fault) или логическую ошибку, при которой первый OPP будет некорректно пропущен. Патч инициализирует переменную как struct dev_pm_opp_data *prev_o = NULL;, что соответствует логике: на первой итерации предыдущего OPP не существует.Как работает атака
Атака эксплуатирует неопределенное поведение при чтении неинициализированной памяти. Злоумышленник с локальным доступом может попытаться контролировать содержимое стека или использовать предсказуемость расположения данных в памяти, чтобы повлиять на значение
prev_o.Если злоумышленнику удастся сделать так, чтобы
prev_o указывало на управляемую им область памяти, он может повлиять на логику выбора OPP. Это может привести к некорректной настройке частоты процессора или GPU, что в худшем случае может быть использовано для повышения привилегий или нарушения целостности системы. Однако точный сценарий эксплуатации зависит от архитектуры и конфигурации системы.Ошибка была обнаружена с помощью флага компилятора Clang
-Wconditional-uninitialized, что указывает на то, что проблема является типичной для статического анализа и может быть выявлена при сборке ядра с соответствующими предупреждениями.Условия успешной эксплуатации
Для успешной эксплуатации уязвимости необходимо выполнение следующих условий:
- Локальный доступ: Злоумышленник должен иметь доступ к системе как пользователь с низкими привилегиями (PR:L).
- Активный драйвер: Драйвер
mtk-mfg-pmdomain.cдолжен быть загружен и активен в ядре. Это характерно для устройств с процессорами MediaTek, поддерживающими MFlexGraphics.
- Воспроизводимость: Злоумышленник должен уметь контролировать или предсказывать значение неинициализированной переменной
prev_oв стеке. Это требует понимания архитектуры и механизмов защиты памяти (ASLR, stack canaries).
- Отсутствие исправления: Система должна работать на версии ядра, не содержащей патч
090a95dbe13df9965279b588d97eda134831769cили его backport в стабильные ветки.
Возможный сценарий атаки
Злоумышленник с локальным доступом запускает процесс, который вызывает инициализацию устройства, использующего драйвер
mtk-mfg-pmdomain.c. Во время выполнения функции mtk_mfg_attach_dev() переменная prev_o содержит случайное значение из стека.Если злоумышленник заранее подготовил стек так, чтобы в месте, где будет прочитана
prev_o, находился указатель на управляемую им память, он может повлиять на результат проверки prev_o->freq == o->freq. Это может привести к тому, что ядро выберет некорректный OPP или выполнит обрыв. В случае успешного контроля потока выполнения это может привести к повышению привилегий или выполнению кода в контексте ядра.Сценарий является гипотетическим, так как публичные данные о подтвержденной эксплуатации отсутствуют. Однако механика ошибки позволяет предположить, что при определенных условиях она может быть использована для нарушения целостности системы.
Есть ли публичный эксплойт
Публичные данные о подтвержденной эксплуатации CVE-2026-80751 в реальных атаках отсутствуют. Ошибка была обнаружена статическим анализатором Clang и исправлена в стабильных ветках ядра. Публичные PoC или эксплойты в открытых базах данных не зафиксированы.
Отсутствие публичного эксплойта не означает, что уязвимость не может быть эксплуатирована. Однако низкий EPSS (0,154%) и отсутствие упоминаний в CISA KEV указывают на то, что в настоящее время активная эксплуатация маловероятна. Тем не менее, администраторам рекомендуется установить исправление, особенно на системах с процессорами MediaTek.
Признаки эксплуатации
Специфические индикаторы компрометации (IOC) для CVE-2026-80751 не опубликованы. Общие признаки, которые могут указывать на попытку эксплуатации, включают:
- Сбои ядра (Kernel Panics): Внезапные падения системы или сообщения об ошибках в
dmesgилиjournalctl, связанные с драйверомmtk-mfg-pmdomain.c.
- Некорректная работа GPU/Процессора: Аномальное поведение подсистемы управления питанием, например, нештатные изменения частоты CPU или GPU.
- Аномальные процессы: Запуск процессов, которые вызывают инициализацию устройств MediaTek без видимой причины.
Эти признаки неспецифичны и могут быть вызваны другими причинами. Для точной диагностики требуется анализ логов и мониторинг активности драйвера.
Как обнаружить атаку
Для обнаружения попыток эксплуатации или последствий уязвимости рекомендуется использовать следующие методы:
- Мониторинг логов ядра: Используйте
dmesgилиjournalctl -kдля отслеживания сообщений об ошибках, связанных с драйверомmtk-mfg-pmdomain.c. Ищите сообщения о kernel faults, page faults или некорректной работе OPP.
- Аудит конфигурации ядра: Убедитесь, что драйвер
mtk-mfg-pmdomain.cне загружен, если он не требуется. Это можно проверить черезlsmod | grep mtk_mfg.
- Статический анализ: При сборке ядра используйте флаги компилятора Clang, такие как
-Wconditional-uninitialized, для выявления подобных ошибок на этапе разработки.
- Мониторинг производительности: Отслеживайте аномальные изменения частоты CPU или GPU, которые могут указывать на некорректную работу подсистемы управления питанием.
Как проверить свою версию
Для проверки версии ядра и наличия исправления используйте следующие команды:
Bash:
uname -r
uname -a
cat /proc/version
Чтобы проверить, применен ли патч, сверьте версию ядра с официальными релизами вашего дистрибутива. Патч
090a95dbe13df9965279b588d97eda134831769c был применен в стабильных ветках ядра. Если вы используете дистрибутив, обратитесь к его базе знаний для получения информации о том, в какой версии пакета ядра включено исправление.Также можно проверить наличие модуля
mtk-mfg-pmdomain:
Bash:
lsmod | grep mtk_mfg
Если модуль не загружен, уязвимость не может быть эксплуатирована на текущей системе.
Исправление
Основным способом устранения уязвимости является обновление ядра до версии, содержащей патч
090a95dbe13df9965279b588d97eda134831769c или его backport в стабильные ветки.- Обновление ядра: Используйте пакетный менеджер вашего дистрибутива для обновления ядра. Например, в Debian/Ubuntu:
sudo apt update && sudo apt upgrade linux-image-$(uname -r).
- Перезагрузка: После обновления ядра выполните перезагрузку системы для применения изменений.
- Отключение драйвера (если возможно): Если драйвер
mtk-mfg-pmdomain.cне требуется, рассмотрите возможность его отключения в конфигурации ядра или через blacklist модулей. Однако это может повлиять на работу GPU и других компонентов.
Рекомендуется следить за официальными уведомлениями безопасности вашего дистрибутива Linux для получения информации о конкретных версиях пакетов, содержащих исправление.
Временные меры защиты
Пока не установлено обновление ядра, можно применить следующие временные меры:
- Ограничение доступа: Ограничьте локальный доступ к системе только доверенным пользователям. Уязвимость требует локального доступа, поэтому снижение числа пользователей с правами на выполнение кода снижает риск.
- Отключение драйвера: Если возможно, отключите драйвер
mtk-mfg-pmdomain.cчерез blacklist модулей или пересборку ядра. Это может повлиять на производительность GPU, но устранит вектор атаки.
- Мониторинг: Усиленный мониторинг логов ядра и производительности для выявления аномального поведения, связанного с драйвером.
Эти меры не устраняют уязвимость, но снижают вероятность успешной эксплуатации. Основным решением остается обновление ядра.
Как проверить устранение уязвимости
Для проверки, что уязвимость устранена, выполните следующие шаги:
- Проверка версии ядра: Убедитесь, что система работает на версии ядра, содержащей патч. Используйте
uname -rи сверьте с официальными релизами.
- Проверка наличия патча: Если вы собираете ядро самостоятельно, убедитесь, что коммит
090a95dbe13df9965279b588d97eda134831769cили его эквивалент присутствует в истории сборки. Для дистрибутивов сверьтесь с changelog пакета ядра.
- Функциональное тестирование: Убедитесь, что драйвер
mtk-mfg-pmdomain.cработает корректно. Проверьте, что GPU и другие компоненты функционируют без ошибок. Используйтеdmesgдля отслеживания сообщений об ошибках.
- Статический анализ: При сборке ядра используйте Clang с флагом
-Wconditional-uninitializedдля подтверждения, что предупреждения об неинициализированных переменных отсутствуют.
Если все проверки пройдены, можно считать, что уязвимость устранена.
Вывод
CVE-2026-80751 представляет собой уязвимость в драйвере pmdomain для MediaTek, связанную с чтением неинициализированной переменной. Хотя публичные данные о массовой эксплуатации отсутствуют, риск локального повышения привилегий или нарушения целостности системы существует.
Администраторам рекомендуется обновить ядро до последней стабильной версии, содержащей патч. Для систем, где обновление невозможно, следует рассмотреть временные меры, такие как ограничение доступа или отключение драйвера.
Мониторинг логов и производительности поможет выявить аномальное поведение, связанное с уязвимостью.
Официальные источники
- NVD — CVE-2026-80751
- FIRST EPSS — CVE-2026-80751
- pmdomain: mediatek: mfg: initialize prev_o in mtk_mfg_attach_dev() - kernel/git/stable/linux.git - Linux kernel stable tree
- pmdomain: mediatek: mfg: initialize prev_o in mtk_mfg_attach_dev() - kernel/git/stable/linux.git - Linux kernel stable tree
- CVEs — The Linux Kernel documentation
История обновлений статьи
- 07.09.2026 — Опубликована первая версия материала.
