CVE-2026-93067 in Linux
Сводка
по VulDB • 18.09.2026
В ядре Linux была устранена следующая уязвимость:
drm/bridge: tc358767: ограничение размера чтения AUX до значения запроса
Функция `tc_aux_transfer()` ограничивает чтение AUX в соответствии с лимитом полезной нагрузки:
```c size_t size = min_t(size_t, DP_AUX_MAX_PAYLOAD_BYTES - 1, msg->size); ```
После завершения передачи значение `size` заменяется на количество байт, которое контроллер сообщает через поле `AUX_BYTES`:
```c if (size) size = FIELD_GET(AUX_BYTES, auxstatus); ```
Поле `AUX_BYTES` имеет маску битов GENMASK(15, 8), поэтому его значение может достигать 255. Ничто не ограничивает это значение обратно до размера запроса. Функция `tc_aux_read_data()` считывает указанное количество байт в стековый буфер `auxrdata` размером 16 байт, а затем копирует их в буфер вызывающей стороны. Указанное значение 255 приводит к чтению до 256 байт и вызывает переполнение обоих буферов (buffer overflow).
Контроллер никогда не должен сообщать о количестве данных большем, чем было запрошено для передачи; поэтому данное исправление представляет собой защиту в глубину (defense in depth), а не устранение активной уязвимости. Сообщаемое количество проверяется лишь поверхностно, и данная проверка является недорогой по вычислительным затратам. Необходимо ограничить значение обратно до размера запроса, аналогично тому, как это делает драйвер ti-sn65dsi86 в коммите aca58eac52b8 ("drm/bridge: ti-sn65dsi86: Never store more than msg->size bytes in AUX xfer").
If you want to get best quality of vulnerability data, you may have to visit VulDB.