Уязвимость в модуле ksmbd ядра Linux, позволяющая удалённо выполнить свой код

В модуле ksmbd, включающем встроенную в ядро Linux реализацию файлового сервера на базе протокола SMB, выявлена критическая уязвимость, позволяющая удалённо добиться выполнения своего кода с правами ядра. Атака может быть проведена без аутентификации, достаточно чтобы на системе был активирован модуль ksmbd. Проблема проявляется начиная с ядра 5.15, выпущенного в ноябре 2021 года, и без лишней огласки устранена в обновлениях 5.15.61, 5.18.18 и 5.19.2, сформированных в августе 2022 года. Так как CVE-идентификатор проблеме ещё не присвоен, точной информации об устранении проблемы в дистрибутивах ещё нет.

Детали об эксплуатации уязвимости пока не раскрываются, известно только то, что уязвимость вызвана обращением к уже освобождённой области памяти (Use-After-Free) из-за отсутствия проверки существования объекта перед выполнением с ним операций. Проблема связана с тем, что в функции smb2_tree_disconnect() освобождалась память, выделанная под структуру ksmbd_tree_connect, но после этого ещё оставался указатель, используемый при обработке определённых внешних запросов, содержащих команды SMB2_TREE_DISCONNECT.

Кроме упомянутой уязвимости в ksmbd также исправлены 4 менее опасные проблемы:

  • ZDI-22-1688 — удалённое выполнение кода с правами ядра из-за отсутствия в коде обработки атрибутов файлов проверки фактического размера внешних данных перед копированием в выделенный буфер. Опасность уязвимости сглаживает то, что атака может быть осуществлена только аутентифицированным пользователем.
  • ZDI-22-1691 — удалённая утечка информации из памяти ядра из-за некорректной проверки входных параметров в обработчике команды SMB2_WRITE (атака может быть осуществлена только аутентифицированным пользователем).
  • ZDI-22-1687 — удалённый вызов отказа в обслуживании через исчерпание доступной в системе памяти из-за некорректного высвобождения ресурсов в обработчике команды SMB2_NEGOTIATE (атака может быть проведена без аутентификации).
  • ZDI-22-1689 — удалённый вызов краха ядра из-за отсутствия должной проверки параметров команды SMB2_TREE_CONNECT, приводящей к чтению из области вне буфера (атака может быть осуществлена только аутентифицированным пользователем).

Поддержка обеспечения работы SMB-сервера при помощи модуля ksmbd присутствует в пакете Samba, начиная с выпуска 4.16.0. В отличие от SMB-сервера, работающего в пространстве пользователя, ksmbd более эффективен с точки зрения производительности, потребления памяти и интеграции с расширенными возможностями ядра. Ksmbd преподносится как высокопроизводительное и готовое для применения на встраиваемых устройствах расширение к Samba, при необходимости интегрируемое с инструментами и библиотеками Samba. Авторами кода ksmbd являются Namjae Jeon из компании Samsung и Hyunchul Lee из LG, а сопровождением в составе ядра занимается Стив Френч (Steve French) из компании Microsoft, мэйнтейнер подсистем CIFS/SMB2/SMB3 в ядре Linux и давний участник команды разработчиков Samba, внёсший значительный вклад в реализацию поддержки протоколов SMB/CIFS в Samba и Linux.

Источник: opennet.ru

Добавить комментарий