Две уязвимости в ksmbd Linux позволяют получить root через SMB

Две уязвимости в ksmbd Linux позволяют получить root через SMB

Две уязвимости в ksmbd Linux позволяют получить root через SMB

Без лишней мистики: исследователь в области кибербезопасности BitsByWill подробно разобрал две критические уязвимости в ksmbd — встроенном в ядро Linux SMB-сервере. Речь о CVE-2023-52440 и CVE-2023-4130 — и самое неприятное, что они отлично склеиваются в рабочую эксплойт-цепочку.

Первая уязвимость, CVE-2023-52440, описывается как контролируемое SLUB-переполнение в функции ksmbd_decode_ntlmssp_auth_blob().

Как пишет BitsByWill, длина sess_key_len контролируется пользователем, и при определённой подаче данных можно переполнить фиксированный буфер sess_key во время вызова cifs_arc4_crypt. Проще говоря — достаточно модифицировать одну строку в ntlm-клиентской библиотеке (в примере — Impacket), чтобы сгенерировать специально подготовленное NTLM-сообщение и получить неаутентифицированное удалённое переполнение буфера с контролем размера и содержимого.

Вторая уязвимость, CVE-2023-4130, — это чтение за пределами буфера (OOB read) в smb2_set_ea(). Из-за плохой проверки расширенных атрибутов (EA) злоумышленник с правом записи на шаре может заставить ksmbd неправильно интерпретировать структуру и считать дополнительные записи. В результате соседние данные кучи попадают в xattr, откуда их можно извлечь через SMB3 queryInfo. То есть брешь позволяет вытянуть части памяти ядра и, например, сломать KASLR.

И вот где всё становится опасно: переполнение даёт запись, чтение даёт утечку. Связав CVE-2023-52440 и CVE-2023-4130, BitsByWill показал рабочий путь до реального ROP-эксплойта.

Для демонстрации потребовались учётные данные пользователя с правом записи на шару, поэтому исследователь пишет о 0-click с аутентификацией — формулировка спорная, но смысл понятен: если админ разрешил анонимную запись в шаре, шанс эксплуатации становится ещё выше.

Авторы анализа подчёркивают практические сценарии: модификация таблиц страниц для произвольного чтения/записи, вынимание секретов из соседних процессов или подготовка ROP-цепочки для исполнения кода в контексте ядра. Всё это — классика эскалации привилегий, но в данном случае — прямо через SMB-интерфейс ядра.

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

DPI видит даже сквозь шифрование, разработчики придумали ответ

«Но ведь трафик зашифрован!» — звучит убедительно, но современный DPI на такое только усмехнётся. Как рассказал пользователь Хабра dmitry__ilyin, классификатору необязательно читать пакеты: достаточно посмотреть на их размеры, направление, интервалы, TLS-рукопожатие и общий рисунок соединения.

OpenVPN, например, выдаёт себя характерным хендшейком, а WireGuard — фиксированными размерами некоторых служебных сообщений.

Даже протокол, притворяющийся обычным TLS, можно раскусить, если после красивого ClientHello он ведёт себя совсем не как браузер.

Команда автора разрабатывает туннельную инфраструктуру, устойчивую к DPI, и решила портить классификаторам жизнь сразу по нескольким направлениям. Клиент с помощью uTLS копирует ClientHello настоящих Chrome, Firefox, Edge и Safari, чередуя варианты между соединениями.

Транспорт работает поверх HTTP/2, а параллельно клиент отправляет реальные запросы к CDN, чтобы сделать общую сетевую активность менее однозначной.

Дополняет картину pacing — сглаживание всплесков передачи, которое мешает анализировать временной рисунок потока. А любители активного прощупывания серверов получают унылый и ни к чему не обязывающий код 404.

Магии, впрочем, не случилось. Дополнительная маскировка прибавляет примерно 40–80 мс задержки, а decoy-трафик заметно нагружает процессор клиента. Наблюдения проводились в сетях Ростелекома, Билайна, Мегафона, МТС, Теле2 и Дом.ру, но автор честно предупреждает: это полевые данные, а не лабораторный бенчмарк против конкретных DPI-систем.

Цель проекта — не сделать трафик невидимым, а лишить DPI простых и стабильных признаков. Часть разработки уже открыта — SDK, протокол обфускации и decoy-логику можно изучить на GitHub.

RSS: Новости на портале Anti-Malware.ru