[ON] Уязвимости в ядре Linux, позволяющие поднять свои привилегии через nf_tables и ksmbd

Обсуждение новостей, соответствующих тематике форума

Модератор: Модераторы разделов

Ответить
Аватара пользователя
rssbot
Бот
Сообщения: 6002
ОС: gnu/linux

[ON] Уязвимости в ядре Linux, позволяющие поднять свои привилегии через nf_tables и ksmbd

Сообщение rssbot »

В Netfilter, подсистеме ядра Linux, используемой для фильтрации и модификации сетевых пакетов, выявлена уязвимость (CVE-2024-1086), позволяющая локальному пользователю выполнить код на уровне ядра и поднять свои привилегии в системе. Проблема вызвана двойным освобождением памяти (double-free) в модуле nf_tables, обеспечивающем работу пакетного фильтра nftables. Выявивший уязвимость исследователь безопасности разработал и опубликовал рабочий прототип эксплоита.






Работа эксплоита продемонстрирована в актуальных выпусках Debian и Ubuntu с ядрами Linux 5.14 - 6.6, а также в окружении с ядром KernelCTF (Capture the Flag), включающем дополнительные патчи для блокирования типовых методов работы эксплоитов и используемом компанией Google в программе выплаты вознаграждений за поиск уязвимостей. Степень успешности работы эксплоита оценивается в 99.4%. В сопроводительной статье детально разобран процесс создания сложного многоуровневого эксплоита и обход присутствующих в ядре механизмов защиты и противодействия работе эксплоитов.
Изображение

Проблема связана с ошибкой в функции nft_verdict_init(), которая допускает использования положительных значений в качестве кода ошибки отбрасывания пакетов (DROP) в hook-ах, что может быть использовано для вызова в функции nf_hook_slow() повторной операции освобождения памяти для буфера, для которого уже была вызвана функция free(). Проблема возникает, когда операция NF_DROP формируется с ошибкой и ядро вначале интерпретирует NF_DROP, но затем освобождает буфер и возвращает статус NF_ACCEPT. Данная ситуация приводит к тому, что несмотря на освобождение связанного с пакетом буфера, его обработка не прекращается, а передаётся в другой обработчик, который в свою очередь второй раз вызывает функцию освобождения памяти.



Уязвимость проявляется начиная с версии ядра Linux 3.15, но эксплоит работает с ядрами начиная с версии 5.14. Исправление уязвимости предложено в выпуске ядра Linux 6.8-rc1 и в конце февраля перенесено в стабильные ветки 5.15.149, 6.1.76 и 6.6.15. В дистрибутивах проследить за исправлением уязвимости можно на страницах: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Arch.






Дополнительно можно отметить серию уязвимостей в модуле ksmbd, предлагающем встроенную в ядро Linux реализацию файлового сервера на базе протокола SMB: Уязвимость CVE-2024-26592 позволяет удалённо без прохождения аутентификации добиться выполнения своего кода с правами ядра на системах с активированным модулем ksmbd. Проблема вызвана состоянием гонки в коде обработки TCP-соединения, которое возникает из-за отсутствия выставления должных блокировок при работе с объектом.


Уязвимость CVE-2023-52440 также позволяет удалённо добиться выполнения своего кода с правами ядра, но вызвана переполнением буфера при обработке некорректных сессионных ключей из-за отсутствия должной проверки размера данных, полученных от пользователя, перед их копированием в буфер фиксированного размера.


Уязвимости (1, 2, 3) CVE-2024-26594, CVE-2023-52442 и CVE-2023-52441 в ksmbd дают возможность удалённо без прохождения аутентификации определить содержимое памяти ядра. Уязвимость CVE-2024-26594 вызвана некорректной проверкой данных при обработке поступивших токенов SMB2 Mech, что приводит к возвращению данных из области за границей буфера. Уязвимость CVE-2023-52442 вызвана отсутствием должной проверки входных данных при обработке связанных в цепочку (chained) запросов. Уязвимость CVE-2023-52441 вызвана отсутствием необходимой проверки входных данных при обработке запросов согласования соединения SMB2.


Уязвимости CVE-2024-26594 и CVE-2024-26592 устранены в ядре 6.8 и корректирующих обновлениях прошлых стабильных веток 6.1.75, 6.6.14, 6.7.2. Остальные уязвимости устранены в ядре 6.5 и обновлениях 5.15.145, 6.1.53, 6.4.16.





В заключение можно упомянуть активацию работы новой команды разработчиков ядра Linux, созданной для анализа наличия уязвимостей и оценки связи вносимых в ядре исправлений с проблемами безопасности. В феврале разработчиками ядра была создана собственная служба CNA (CVE Numbering Authority), которая получила полномочия самостоятельного присвоения CVE-идентификаторов уязвимостям. До этого присвоение CVE и анализ связи исправлений с возможными уязвимостями ложился на плечи разработчиков дистрибутивов, а в ядре потенциальные уязвимости не оставались выделены и фигурировали наравне с обычными исправлениями. Результаты работы новой службы превзошли все ожидания - ежедневно в ядре
помечается до нескольких десятков новых уязвимостей, которые ранее не были помечены как проблемы с безопасностью. Например, 26 марта новые CVE-идентификаторы присвоены 14 уязвимостям, которые ранее не рассматривались как проблемы с безопасностью, а 25 марта - 41 уязвимости.



Источник: https://www.opennet.ru/opennews/art.shtml?num=60860
(opennet.ru, основная лента)
Последний раз редактировалось rssbot 27.03.2024 12:03, всего редактировалось 1 раз.
Причина: Updated upstream
Спасибо сказали:
Ответить