Релиз OpenSSH 9.8 с отключением алгоритма DSA и дополнительными механизмами защиты

Опубликован релиз OpenSSH 9.8, открытой реализации клиента и сервера для работы по протоколам SSH 2.0 и SFTP. Помимо устранения отдельно анонсированной критической уязвимости (CVE-2024–6387), позволяющей добиться удалённого выполнения кода с правами root на стадии до прохождения аутентификации, в новой версии исправлена ещё одна менее опасная уязвимость и предложено несколько существенных изменений, нацеленных на повышение безопасности.

Вторая уязвимость позволяет обойти добавленную в версии OpenSSH 9.5 защиту от атак по сторонним каналам, анализирующим задержки между нажатиями клавиш на клавиатуре для воссоздания ввода. Уязвимость позволяет отличить пакеты, создающие фоновую активность через симуляцию фиктивных нажатий клавиш, от пакетов, отправляемых при нажатии реальных клавиш, что снижает эффективность механизма скрытия особенностей интерактивного ввода в трафике в ssh. Данные о нажатиях позволяют использовать атаки, воссоздающие ввода на основе анализа задержек между нажатиями при наборе текста, которые зависят от расположения клавиш на клавиатуре (например, реакция при вводе буквы «F» быстрее, чем при вводе «Q» или «X», так как для нажатия требуется меньше движений пальцев).

Кроме того, выяснилось, что реализованный алгоритм отправки пакетов с реальными и фиктивными нажатиями снижал надёжность другого метода защиты от атак по сторонним каналам. Начиная с выпуска OpenSSH 2.9.9 сервер отправлял пакеты с фиктивными нажатиями для консольного ввода в режиме echo-off, используемом, например, при вводе паролей в su или sudo. Новая логика отправки фиктивных пакетов позволяла при пассивном анализе трафика выделять пакеты с реальными нажатиями в режиме echo-off для их отдельного анализа. При этом точность сведений о времени нажатий ограничивается, так как после набора пакеты отправляются не сразу, а через фиксированные промежутки времени (по умолчанию 20 мс).

Другие изменения в OpenSSH 9.8:

  • На этапе сборки отключена по умолчанию поддержка цифровых подписей на базе алгоритма DSA. В начале 2025 года реализация DSA будет удалена из кодовой базы. В качестве причины удаления называется не соответствующий современным требованиям уровень защиты в DSA. Затраты на продолжение сопровождения небезопасного алгоритма DSA не оправдывают себя и его удаление позволит стимулировать прекращение поддержки DSA в других реализациях SSH и криптографических библиотеках.

  • Для дополнительной защиты от методов эксплуатации уязвимостей, требующих установки большого числа соединений к sshd, реализован и включён по умолчанию новый режим защиты, который также помогает для блокирования автоматизированных атак по подбору паролей, в ходе которых боты пытаются угадать пароль пользователя, перебирая различные типовые комбинации. Защита реализована через блокировку IP-адресов, c которых фиксируется большое числу неудачных попыток соединений — sshd отслеживает статус завершения дочерних процессов, определяя ситуации когда не прошла аутентификация или когда процесс был аварийно завершён из-за сбоя, и при превышении определённого порога начинает блокировать запросы с проблемных IP или подсетей. Для настройки порога срабатывания блокировки, маски блокируемой подсети и списка исключений предложены параметры PerSourcePenalties, PerSourceNetBlockSize и PerSourcePenaltyExemptList.

  • Осуществлено разделение sshd на несколько отдельных исполняемых файлов. Из sshd выделен процесс sshd-session, выполняющий задачи, связанные с обработкой сеансов. В процессе sshd оставлены функции, отвечающие за приём сетевых соединений, проверку конфигурации, загрузку хостовых ключей и управление запускаемыми процессами в соответствии с параметром MaxStartups. Таким образом исполняемый файл sshd теперь содержит минимальную функциональность, необходимую для приёма нового сетевого соединения и запуска sshd-session для обработки сеанса.

  • Изменился текст некоторых сообщений об ошибках, записываемых в лог. В частности, ряд сообщений теперь отправляется от имени процесса «sshd-session», а не «sshd».

  • В утилите ssh-keyscan вывод информации о версии протокола и имени хоста теперь выводится в стандартный поток, а не в STDERR. Для отключения вывода предложена опция »-q».

  • В ssh реализована возможность отключения через директиву HostkeyAlgorithms отката от использования сертификата хостового ключа к использованию простых (plain) хостовых ключей.

  • В переносимой версии sshd прекращено использование значения argv[0] для определения имени сервиса PAM. Для задания имени сервиса PAM в sshd_config добавлена новая директива «PAMServiceName», которая по умолчанию выставлена в значение «sshd».
  • В переносимой версии sshd обеспечено сохранение автоматически генерируемых файлов (скрипт configure, config.h.in и т.п.) в ветке Git с релизами (например, V_9_8), что позволило синхронизировать состав заверенных цифровой подписью tar-архивов и веток в Git.

  • В переносимой версии ssh и ssh-agent обеспечено выставление режима SSH_ASKPASS при наличии переменной окружения WAYLAND_DISPLAY, по аналогии с тем как для X11 это делалось при наличии переменной окружения DISPLAY.

  • В переносимой версии sshd добавлена поддержка отправки в systemd уведомлений при создании слушающего сетевого сокета или перезапуске, используя обособленный код, не обращающийся к библиотеке libsystemd.



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

OpenNet прочитано 3297 раз