Обновление OpenSSH 9.9p1 с устранением возможности совершения MITM-атаки

Доступен корректирующий выпуск OpenSSH 9.9p1, в котором устранены две уязвимости, выявленные компанией Qualys. Продемонстрирован пример использования данных уязвимостей для совершения MITM-атаки, позволяющей при попытке подключения клиента к SSH-серверу, перенаправить трафик на собственный фиктивный сервер, обойти проверку хостовых ключей и создать у клиента видимость подключения к желаемому серверу (ssh-клиент примет хостовый ключ фиктивного сервера вместо ключа легитимного сервера).

Первая уязвимость (CVE-2025–26465) вызвана логической ошибкой в утилите ssh, позволяющей обойти проверку идентификации сервера и совершить MITM-атаку. Проблема проявляется начиная с выпуска OpenSSH 6.8p1 (декабрь 2014 г.) в конфигурациях с включённой настройкой VerifyHostKeyDNS. В базовой поставке OpenSSH данная опция по умолчанию отключена, но до марта 2023 года была включена в настройках ssh во FreeBSD.

Суть проблемы в том, что в коде функции verify_host_key_callback () при вызове функции verify_host_key () проверяется только код ошибки »-1», а другие коды, такие как »-2», игнорируются. В итоге функция verify_host_key_callback () может вернуть успешный код »0», несмотря на возврат ошибки »-2» функцией verify_host_key (). Код ошибки »-2» возвращается функцией verify_host_key () при нехватке памяти. Если создать условия, которые приведут к невозможности выделить память в функции verify_host_key (), SSH посчитает, что хостовый ключ был проверен успешно. Для создания таких условий подставной SSH-сервер атакующего, на который перенаправлен клиент, возвращает хостовый ключ максимально возможного размера (256KB), и одновременно эксплуатируется утечка памяти на стороне ssh-клиента.

Условия для создания утечки памяти достигаются благодаря второй уязвимости (CVE-2025–26466), затрагивающей как клиент ssh, так и сервер sshd, и эксплуатируемая без аутентификации. Уязвимость позволяет исчерпать доступную процессу память и создать высокую нагрузку на CPU через отправку большого числа пакетов SSH2_MSG_PING. В обработчике пакетов SSH2_MSG_PING имеется утечка памяти, проявляющаяся начиная с выпуска OpenSSH 9.5p1 (август 2023 г.). Утечка возникает из-за того, что на каждый поступающий 16-байтовый PING-пакет выделяется 256-байтовый буфер для формирования ответа, но данный буфер освобождается только после завершения согласования ключей. В качестве обходного пути защиты предлагается настроить ограничения при помощи директив LoginGraceTime, MaxStartups и PerSourcePenalties.



Источник: http://www.opennet.ru/opennews/art.shtml? num=62742

© OpenNet