Уязвимость в GSSAPI-патче к OpenSSH, удалённо эксплуатируемая на стадии до аутентификации

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 1149
Зарегистрирован: 20.08.2022

#

Уязвимость в GSSAPI-патче к OpenSSH, удалённо эксплуатируемая на стадии до аутентификации
Дата публикации:Fri, 13 Mar 2026 09:48:59 +0300

В применяемом во многих дистрибутивах Linux патче gssapi.patch, добавляющем в OpenSSH поддержку обмена ключей на базе GSSAPI, выявлена уязвимость (CVE-2026-3497), приводящая к разыменованию указателя, повреждению памяти и обходу механизма разделения привилегий (Privsep). Уязвимость может быть эксплуатирована удалённо на стадии до осуществления аутентификации. Выявивший проблему исследователь продемонстрировал инициирование аварийного завершения процесса через отправку на SSH-сервер одного модифицированного сетевого пакета. Не исключается, что помимо отказа в обслуживании, существуют более опасные варианты эксплуатации уязвимости.
Примечательно, что в своё время разработчики OpenSSH отказались принимать в основной состав изменение для поддержки GSSAPI из-за сомнений в его безопасности. При этом многие дистрибутивы Linux включили данный патч в свои пакеты c OpenSSH. В обиходе встречается несколько версий GSSAPI-патча, но в большинстве из них имеется приводящая к уязвимости ошибка. Исправление пока доступно только в форме патча, изменения в котором сводятся к замене вызова функции sshpkt_disconnect() на ssh_packet_disconnect() в файле kexgsss.c.
В настоящее время наличие уязвимости подтверждено в Debian и Ubuntu. В остальных дистрибутивах применение проблемного патча и его подверженность уязвимости уточняется (SUSE/openSUSE, RHEL, Gentoo, Arch, Fedora). Уязвимость проявляется только при включении в настройках опции "GSSAPIKeyExchange yes". На возможность эксплуатации также влияют опции компилятора с которыми в дистрибутивах собран пакет.
Причиной возникновение уязвимости является ошибка в функции sshpkt_disconnect(), из-за которой процесс не завершался после поступления disconnect-сообщения, что позволяло атакующему на стадии согласования ключей отправить не предусмотренный логикой работы сервера тип GSSAPI-сообщения. После поступления внепланового GSSAPI-сообщения, сервер помещает его в очередь и не прерывает выполнение программы, но при этом не инициализирует переменные, определяющие параметры соединения. В дальнейшем в цикле обработки событий выполняется код, который читает неинициализированную структуру recv_tok из стека (читаются данные, оставшиеся в стеке от прошлого вызова функции), отправляет её привилегированному процессу через IPC и затем передаёт в функцию gss_release_buffer(), которая может вызвать функцию free() и освободить память для некорректного указателя, ссылающегося на случайную область памяти.

Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=64983

Жизнь за Нер'зула!

Ответить