В модуле ksmbd, предлагающем встроенную в ядро Linux реализацию файлового сервера на базе протокола SMB, выявлено 14 уязвимостей, из которых четыре позволяют удалённо добиться выполнения своего кода с правами ядра. Атака может быть проведена без аутентификации, достаточно чтобы на системе был активирован модуль ksmbd. Проблемы проявляются начиная с ядра 5.15, в состав которого был принят модуль ksmbd. Уязвимости устранены в обновлениях ядра 6.3.2,6.2.15,6.1.28 и5.15.112. Проследить за исправлением в дистрибутивах можно на следующих страницах: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Gentoo, Arch.
Выявленные проблемы:
- CVE-2023-32254, CVE-2023-32250, CVE-2023-32257, CVE-2023-32258 – удалённое выполнение кода с правами ядра из-за отсутствия должных блокировок объектов при обработке внешних запросов, содержащих команды SMB2_TREE_DISCONNECT, SMB2_SESSION_SETUP, SMB2_LOGOFF и SMB2_CLOSE, что приводит к эксплуатируемому состоянию гонки. Атака может быть осуществлена без прохождения аутентифицикации.
- CVE-2023-32256 – утечка содержимого областей памяти ядра из-за состояния гонки при обработке команд SMB2_QUERY_INFO и SMB2_LOGOFF.
Атака может быть осуществлена без прохождения аутентифицикации. - CVE-2023-32252, CVE-2023-32248 – удалённый отказ в обслуживании из-за разыменования нулевого указателя при обработке команд SMB2_LOGOFF, SMB2_TREE_CONNECT и SMB2_QUERY_INFO. Атака может быть осуществлена без прохождения аутентифицикации.
- CVE-2023-32249 – возможность перехвата сеанса с пользователем из-за отсутствия должной изоляции при обработке идентификатора сеанса в многоканальном режиме.
- CVE-2023-32247, CVE-2023-32255 – отказ в обслуживании из-за утечки памяти при обработке команды SMB2_SESSION_SETUP. Атака может быть осуществлена без прохождения аутентифицикации.
- CVE-2023-2593 – отказ в обслуживании из-за исчерпания доступной памяти, вызванный ошибкой, приводящей к невозвращению памяти при обработке новых TCP-соединений. Атака может быть осуществлена без прохождения аутентифицикации.
- CVE-2023-32253 – отказ в обслуживании из-за возникновения взаимной блокировки при обработке команды SMB2_SESSION_SETUP. Атака может быть осуществлена без прохождения аутентифицикации.
- CVE-2023-32251 – отсутствие защиты от атак по подбору параметров аутентификации (brute force).
- CVE-2023-32246 – локальный пользователь системы, имеющий право выгрузки модуля ksmbd, может добиться выполнения своего кода на уровне ядра Linux.
Кроме того, ещё 5 уязвимостей выявлены в пакете ksmbd-tools, включающем утилиты для управления и работы с ksmbd, выполняемые в пространстве пользователя. Наиболее опасные уязвимости (ZDI-CAN-17822, ZDI-CAN-17770, ZDI-CAN-17820, CVE пока не назначены) позволяют удалённому неаутентифицированному атакующему выполнить свой код с правами root. Уязвимости вызваны отсутствием проверки размера принимаемых внешних данных перед их копированием в буфер в коде сервиса WKSSVC и в обработчиках опкодов LSARPC_OPNUM_LOOKUP_SID2 и SAMR_OPNUM_QUERY_USER_INFO. Ещё две уязвимости (ZDI-CAN-17823, ZDI-CAN-17821) могут привести к удалённому отказу в обслуживании без прохождения аутентифицикации.
Ksmbd преподносится как высокопроизводительное и готовое для применения на встраиваемых устройствах расширение к Samba, при необходимости интегрируемое с инструментами и библиотеками Samba. Поддержка обеспечения работы SMB-сервера при помощи модуля ksmbd присутствует в пакете Samba, начиная с выпуска 4.16.0. В отличие от SMB-сервера, работающего в пространстве пользователя, ksmbd более эффективен с точки зрения производительности, потребления памяти и интеграции с расширенными возможностями ядра.Авторами кода ksmbd являются Namjae Jeon из компании Samsung и Hyunchul Lee из LG, а сопровождением в составе ядра занимается Стив Френч (Steve French) из компании Microsoft, мэйнтейнер подсистем CIFS/SMB2/SMB3 в ядре Linux и давний участник команды разработчиков Samba, внёсший значительный вклад в реализацию поддержки протоколов SMB/CIFS в Samba и Linux.
Дополнительно можно отметить две уязвимости в графическом драйвере vmwgfx, применяемом для реализации 3D-ускорения в окружениях VMware.
Первая уязвимость (ZDI-CAN-20292) позволяет локальному пользователю повысить свои привилегии в системе. Уязвимость вызвана отсутствием проверки состояния буфера перед освобождением при обработке объекта vmw_buffer_object, что может привести к двойныму вызову функции free.
Вторая уязвимость (ZDI-CAN-20110 приводит к утечке содержимого памяти ядра из-за ошибок при организации блокировки объектов GEM. Для атаки необходимо наличие доступа к устройству /dev/dri/card0 или /dev/dri/rendererD128.