В ядре Linux устранена следующая уязвимость:
coresight: ultrasoc-smb: исправлена запись OOB в smb_sync_perf_buffer(). Когда приемник SMB используется как приемник AUX, вызывается smb_update_buffer().
smb_sync_perf_buffer() для копирования данных трассировки оборудования в кольцо perf AUX
буферные страницы. Он наследует pg_idx = head >> PAGE_SHIFT от @head, что
handle->head и индексирует dst_pages[pg_idx]. pg_idx %= nr_pages
нормализация применяется только после первой итерации цикла.
В результате индекс начальной страницы не зависит от размера буфера, что
может привести к записи за пределами dst_pages[], когда заголовок превышает
размер буфера AUX. Нормализовать заголовок по модулю размера буфера AUX перед получением индекса страницы.
и смещение, отражающее tmc_etr_sync_perf_buffer().
Показать оригинальное описание (EN)
In the Linux kernel, the following vulnerability has been resolved: coresight: ultrasoc-smb: Fix OOB write in smb_sync_perf_buffer() When the SMB sink is used as a perf AUX sink, smb_update_buffer() calls smb_sync_perf_buffer() to copy hardware trace data into the perf AUX ring buffer pages. It derives pg_idx = head >> PAGE_SHIFT from @head, which is handle->head, and indexes dst_pages[pg_idx]. The pg_idx %= nr_pages normalization is only applied after the first loop iteration. This leaves the initial page index underived from the buffer size, which can result in an out-of-bounds write past dst_pages[] when head exceeds the AUX buffer size. Normalize head modulo the AUX buffer size before deriving the page index and offset, mirroring tmc_etr_sync_perf_buffer().
Характеристики атаки
Последствия
Строка CVSS v3.1