Исследователи кибербезопасности обнаружили критическую уязвимость в модуле KSMBD ядра Linux, позволяющую злоумышленникам выполнять произвольный код на целевых системах без какого-либо взаимодействия с пользователем. Уязвимость относится к категории "нулевого клика" (0-click), что значительно повышает её опасность, поскольку для эксплуатации не требуется действий со стороны пользователя.
Детали уязвимости
KSMBD представляет собой сервер SMB3, функционирующий в пространстве ядра и отвечающий за обработку сетевого общего доступа к файлам. Специалисты продемонстрировали стабильный эксплойт для KSMBD в Linux версии 6.1.45, достигнув удалённого выполнения кода (Remote Code Execution, RCE) с вероятностью успеха свыше 95 процентов.
Эксплойт использует две известные уязвимости, исправленные программой Zero Day Initiative в начале 2024 и конце 2023 года. На первом этапе происходит переполнение кучи без аутентификации (CVE-2023-52440) в процессе NTLM-аутентификации. Путем создания умышленно искажённого blob-объекта сессионного ключа в сообщении SMB2_SESSION_SETUP эксплойт вызывает контролируемое переполнение SLUB в выделенной области kmalloc-512. Это переполнение служит примитивом "writeheap", позволяя злоумышленнику повреждать смежную область kernel memory без прохождения аутентификации.
Вторая аутентифицированная уязвимость (CVE-2023-4130) в парсере расширенных атрибутов (Extended Attributes, EA) предоставляет примитив чтения за пределами выделенной памяти. Создавая специально сформированный буфер EA, атакующий может получить произвольное содержимое кучи через метаданные xattr, что эквивалентно примитиву "writeleak".
Комбинация этих примитивов позволяет построить полную цепочку атаки. Утечка данных раскрывает указатели ядра и обходит защиту KASLR путем чтения указателей из slab kmalloc-1k, который содержит объекты соединений KSMBD. Исследователи применяют технику распыления kernel objects, открывая множественные SMB-соединения и сессии, после чего repeatedly вызывают переполнение до тех пор, пока одно из соединений не будет повреждено. Использование управляемого цикла spray-and-check позволяет определить жертву переполнения и украденные указатели.
После обхода KASLR атакующие создают гаджеты ROP ядра, чтобы перехватить указатель local_nls сеанса. Примитив произвольного освобождения памяти приводит к наложению части кучи одной сессии на объект соединения, что позволяет перезаписать указатели функций в kmalloc-1k. На последнем этапе специально сформированный SMB-запрос выделяет большой фрагмент памяти, содержащий цепочку ROP. Эта цепочка перенаправляет стек в контролируемую память, устанавливает аргументы и вызывает call_usermodehelper для запуска обратной оболочки в пользовательском режиме.
Для предотвращения аварийного завершения системы используется sleep-гаджет, поддерживающий работу kernel thread. Важно отметить, что KSMBD часто отключен в production-средах, что ограничивает потенциальный масштаб воздействия. Однако любая система, работающая на устаревшем ядре 6.1.x с включенным KSMBD и доступная из ненадёжных сетей, остается уязвимой.
Системным администраторам настоятельно рекомендуется обновить ядро до версии 6.1.46 или новее, где обе уязвимости исправлены. Включение стандартных опций усиления безопасности (SMEP, SMAP, KPTI, random slab freelist) снижает надежность эксплуатации, но не устраняет угрозу полностью.
Данный эксплойт категории N-Day подчеркивает риски эксплуатации сложных сервисов в пространстве ядра. Хотя KSMBD предлагает преимущества в производительности, он значительно расширяет поверхность атаки для удаленного выполнения кода. Администраторам следует предпочитать SMB-серверы пользовательского пространства, если производительность на уровне ядра не является строго необходимой, и обеспечивать своевременное применение обновлений безопасности. Непрерывный мониторинг необычного SMB-трафика и отключение анонимного доступа на запись обеспечивают дополнительное снижение рисков. Постоянный аудит модулей ядра и осторожное развертывание новых сервисов остаются критически важными для поддержания безопасности систем.
Ссылки
- https://www.cve.org/CVERecord?id=CVE-2023-52440
- https://www.cve.org/CVERecord?id=CVE-2023-4130
- https://www.willsroot.io/2025/09/ksmbd-0-click.html
- https://git.kernel.org/stable/c/bd554ed4fdc3d38404a1c43d428432577573e809
- https://git.kernel.org/stable/c/30fd6521b2fbd9b767e438e31945e5ea3e3a2fba
- https://git.kernel.org/stable/c/7f1d6cb0eb6af3a8088dc24b7ddee9a9711538c4
- https://git.kernel.org/stable/c/ecd7e1c562cb08e41957fcd4b0e404de5ab38e20
- https://git.kernel.org/stable/c/4b081ce0d830b684fdf967abc3696d1261387254
- https://git.kernel.org/stable/c/aeb974907642be095e38ecb1a400ca583958b2b0
- https://git.kernel.org/stable/c/f339d76a3a972601d0738b881b099d49ebbdc3a2
- https://git.kernel.org/stable/c/4bf629262f9118ee91b1c3a518ebf2b3bcb22180
- https://git.kernel.org/stable/c/79ed288cef201f1f212dfb934bcaac75572fb8f6