Уязвимость в модуле ksmbd позволяет получить права root в Linux-системах

vulnerability

Исследователь безопасности Норберт Сзетеи опубликовал завершающую часть своего глубокого анализа файловой системы ksmbd, представив рабочий эксплойт для уязвимости CVE-2025-37947. В отличие от предыдущих кандидатов в уязвимости типа use-after-free (использование после освобождения), которые требовали сложных условий гонки или зависели от внешних факторов, эта уязвимость предлагает детерминированную примитивную операцию записи за пределами буфера.

Детали

Эксплойт Сзетеи был протестирован на Ubuntu 22.04.5 LTS с ядром 5.15.0-153-generic, продемонстрировав надежный путь получения локальных привилегий root через переполнение обнуленного буфера, выделенного с помощью kvmalloc(). Уязвимость представляет особую опасность для сред, где файловые общие ресурсы SMB полагаются на ksmbd с включенными расширенными атрибутами потоков.

Корневая причина уязвимости находится в функции ksmbd_vfs_stream_write() в файле fs/ksmbd/vfs.c. Когда общий ресурс с возможностью записи настраивается с параметром vfs objects = streams_xattr, код ограничивает общий размер значением XATTR_SIZE_MAX (0x10000), но все же разрешает запись за пределами этого лимита, устанавливая *pos в 0x10000 и count в 8. Последующий вызов memcpy(&stream_buf[*pos], buf, count) записывает восемь байт за границей буфера, предоставляя злоумышленнику контролируемое повреждение памяти.

Формирование кучи через манипуляции с аллокатором SLUB гарантирует, что переполнение попадает в смежный объект порядка 4 в случае Сзетеи, что позволяет повредить указатели основных ядерных сообщений msg_msg. Процесс эксплуатации включает распыление, освобождение и восстановление объектов, что приводит к цепочке использования после освобождения, за которой следуют утечки памяти ядра для обхода защит SMAP, SMEP и KASLR, завершающиеся поворотом стека и выполнением ROP-цепи.

Полный исходный код эксплойта доступен на GitHub. Уязвимость затрагивает версии ядра Linux с 5.15.0 до 6.x и имеет оценку CVSS 3.1 7.8 баллов. Для эксплуатации необходимы аутентифицированный пользователь SMB и доступный для записи общий ресурс с включенным streams_xattr.

Поскольку для атаки требуются только действительные учетные данные и минимальная конфигурация общего ресурса, злоумышленники со стандартными учетными записями пользователей могут получить привилегии root, что подрывает целостность хоста. Организации, использующие затронутые версии ядра, должны немедленно применить обновления от разработчиков или дистрибутивов.

В качестве временной меры защиты рекомендуется отключить модуль stream_xattr или удалить разрешения на запись с общих ресурсов SMB, что предотвращает условия срабатывания уязвимости. Мониторинг необычной активности SMB и проверка /var/log/kern.log на следы записи за пределами буфера могут помочь обнаружить попытки эксплуатации.

Принудительное применение политик учетных записей SMB с минимальными привилегиями и изоляция критических систем от ненадежных сетей дополнительно снижают риск до полного устранения уязвимости. Регулярное обновление систем и применение исправлений безопасности остаются важнейшими мерами защиты от подобных угроз в современных ИТ-инфраструктурах.

Ссылки

Комментарии: 0