V
Сканер-ВС
ГлавнаяКаталогИсточникиCWECAPECATT&CKМеры защитыПродуктыВендорыДокументация
CVE-2024-40979
AST
Средний

В ядре Linux устранена следующая уязвимость: wifi: ath12k: исправлен сбой ядра во время возобновления работы В настоящее время во время воз…

CVSS
4.4
Средний
EPSS
0.00
p16
Опубликовано
2024-01-01
Обновлено
2024-01-01
Описание

В ядре Linux устранена следующая уязвимость: wifi: ath12k: исправлен сбой ядра во время возобновления работы В настоящее время во время возобновления работы память цели QMI обрабатывается неправильно, что приводит к сбою ядра, если не поддерживается переназначение DMA: BUG: Bad page state in process kworker/u16:54 pfn:36e80 page: refcount:1 mapcount:0 mapping:0000000000000000 index:0x0 pfn:0x36e80 page dumped because: nonzero _refcount Call Trace: bad_page free_page_is_bad_report __free_pages_ok __free_pages dma_direct_free dma_free_attrs ath12k_qmi_free_target_mem_chunk ath12k_qmi_msg_mem_request_cb Причина в следующем: После загрузки модуля ath12k микропрограмма отправляет запрос памяти хосту. Если переназначение DMA не поддерживается, ath12k отклоняет первый запрос из-за сбоя при выделении с большим размером сегмента: ath12k_pci 0000:04:00.0: qmi firmware request memory request ath12k_pci 0000:04:00.0: qmi mem seg type 1 size 7077888 ath12k_pci 0000:04:00.0: qmi mem seg type 4 size 8454144 ath12k_pci 0000:04:00.0: qmi dma allocation failed (7077888 B type 1), will try later with small size ath12k_pci 0000:04:00.0: qmi delays mem_request 2 ath12k_pci 0000:04:00.0: qmi firmware request memory request Позже микропрограмма возвращается с большим количеством, но небольших сегментов, и выделение проходит успешно: ath12k_pci 0000:04:00.0: qmi mem seg type 1 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 1 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 1 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 1 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 1 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 1 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 1 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 1 size 262144 ath12k_pci 0000:04:00.0: qmi mem seg type 1 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 1 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 1 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 1 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 1 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 4 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 4 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 4 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 4 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 4 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 4 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 4 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 4 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 4 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 4 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 4 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 4 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 4 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 4 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 4 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 4 size 524288 ath12k_pci 0000:04:00.0: qmi mem seg type 4 size 65536 ath12k_pci 0000:04:00.0: qmi mem seg type 1 size 524288 Теперь ath12k работает. Если срабатывает приостановка, микропрограмма будет перезагружена во время возобновления работы. Как и прежде, микропрограмма сначала запрашивает два больших сегмента. В ath12k_qmi_msg_mem_request_cb() назначаются количество и размер сегментов: ab->qmi.mem_seg_count == 2 ab->qmi.target_mem[0].size == 7077888 ab->qmi.target_mem[1].size == 8454144 Затем выделение завершается неудачей, как и прежде, и вызывается ath12k_qmi_free_target_mem_chunk() для освобождения всех выделенных сегментов. Обратите внимание, что первый сегмент пропускается, потому что его v.addr очищается из-за сбоя выделения: chunk->v.addr = dma_alloc_coherent() Также обратите внимание, что это приводит к утечке этого сегмента, потому что он не был освобожден. При освобождении второго сегмента размер 8454144 передается в dma_free_coherent(). Однако помните, что этот сегмент выделяется при первой загрузке микропрограммы, перед приостановкой. Таким образом, его реальный размер составляет 524288, что намного меньше 8454144. В результате ядро обнаружило, что мы освобождаем некоторую память, которая используется, и поэтому происходит сбой. ---truncated---

Теги · CWE
CWE-188
CWE-401
Затронутые продукты
LinuxLinuxLinuxLinuxLinuxLinuxLinuxLinuxLinuxLinuxLinuxLinuxLinux-5.10Linux-5.10Linux-5.10Linux-allwinner-5.19Linux-awsLinux-awsLinux-awsLinux-aws
Вектор CVSS
CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H
Хронология
2024-01-01
Опубликована
2024-01-01
Обновлена
Разбор CVSS 3.1
Вектор атаки
AV: L
Локальная (L)
Сложность атаки
AC: L
Низкая (L)
Требуемые привилегии
PR: H
Высокие (H)
Взаимодействие с пользователем
UI: N
Отсутствует (N)
Область воздействия
S: U
Неизменная (U)
Воздействие на конфиденциальность
C: N
Отсутствует (N)
Воздействие на целостность
I: N
Отсутствует (N)
Воздействие на доступность
A: H
Высокое (H)
Индикаторы эксплуатации
EPSS
0.003 · p16
Известна эксплуатация (KEV)
Нет
Проверки Сканер-ВС
Проверок Сканер-ВС для этой уязвимости в базе пока нет.
Затронутые продукты
ПродуктВендорСтатус
linuxОтслеживается
linuxОтслеживается
linuxОтслеживается
linuxОтслеживается
linuxОтслеживается
linuxОтслеживается
linuxОтслеживается
linuxОтслеживается
linuxОтслеживается
linuxОтслеживается
linuxОтслеживается
linuxОтслеживается
linux-5.10Отслеживается
linux-5.10Отслеживается
linux-5.10Отслеживается
linux-allwinner-5.19Отслеживается
linux-awsОтслеживается
linux-awsОтслеживается
linux-awsОтслеживается
linux-awsОтслеживается
Показаны первые 20 из 233
Источники данных
AST
DEB
CVE
UBU
Связанные уязвимости