Ad

CVE-2026-12232

MEDIUM CVSS 3.1: 6,1 EPSS 0.10%
Обновлено 13 августа 2026
Intel
Параметр Значение
CVSS 6,1 (MEDIUM)
Тип уязвимости CWE-125 (Чтение за пределами буфера)
Поставщик Intel
Публичный эксплойт Нет

Функция драйвера цифрового аудиоинтерфейса Intel ALH dai_alh_get_properties() в драйверах/dai/intel/alh/alh.c использовала предоставленный вызывающей стороной intstream_id без проверки диапазона. Это значение индексирует массив static const uint8_t alh_handshake_map[64] фиксированного размера и масштабирует адрес регистра FIFO, поэтому значениеstream_id, находящееся вне диапазона, производит чтение за пределами допустимого диапазона одного байта с выбранным злоумышленником знаковым смещением от массива. Этот байт записывается в prop->dma_hs_id, а полученная структура dai_properties копируется обратно вызывающему объекту, передавая его. dai_get_properties_copy() — это __syscall Zephyr, и его верификатор z_vrfy_dai_get_properties_copy() (drivers/dai/dai_handlers.c) проверяет только разрешение объекта устройства и буфер назначения, а неstream_id.

Таким образом, поток пользовательского режима, которому предоставлен доступ к объекту устройства ALH DAI, может вызвать системный вызов с произвольным идентификатором потока, пересекая границу пользовательского пространства/песочницы ядра. Результатом является раскрытие информации ядра с произвольным смещением по одному байту на вызов (и утечка вычисленного адреса ядра через fifo_address); stream_id, который разрешает ошибки несопоставленной страницы в контексте ядра, вызывая локальный отказ в обслуживании. Для эксплуатации требуется CONFIG_USERSPACE и доступ к устройству, что делает эту проблему локальной и средней серьезности.

Исправление заранее отклоняет отрицательные и слишком большие значенияstream_id и возвращает NULL, который оболочка копирования сопоставляет с -ENOENT.

Показать оригинальное описание (EN)

The Intel ALH digital-audio-interface driver function dai_alh_get_properties() in drivers/dai/intel/alh/alh.c used a caller-supplied int stream_id with no range validation. The value indexes the fixed-size static const uint8_t alh_handshake_map[64] array and scales a FIFO register address, so an out-of-range stream_id produces an out-of-bounds read of one byte at an attacker-chosen signed offset from the array. That byte is written into prop->dma_hs_id and the resulting struct dai_properties is copied back to the caller, leaking it. dai_get_properties_copy() is a Zephyr __syscall, and its verifier z_vrfy_dai_get_properties_copy() (drivers/dai/dai_handlers.c) validates only the device-object permission and the destination buffer, not stream_id. A user-mode thread that has been granted access to the ALH DAI device object can therefore call the syscall with an arbitrary stream_id, crossing the userspace/kernel sandbox boundary. The impact is a one-byte-per-call arbitrary-offset kernel information disclosure (and leakage of a computed kernel address via fifo_address); a stream_id that resolves to an unmapped page faults in kernel context, giving a local denial of service. Exploitation requires CONFIG_USERSPACE and device access, making this a local, moderate-severity issue. The fix rejects negative and too-large stream_id values up front and returns NULL, which the copy wrapper maps to -ENOENT.

Характеристики атаки

Способ атаки
Локальный
Нужен локальный доступ
Сложность
Низкая
Легко эксплуатировать
Нужны права
Низкие
Нужны базовые права
Участие пользователя
Не требуется
Не нужно действие пользователя

Последствия

Конфиденциальность
Высокое
Полная утечка данных
Целостность
Нет
Нет модификации данных
Доступность
Низкое
Частичное нарушение работы

Строка CVSS v3.1