В выпуске OpenSSH 10.3 представлено пять исправлений безопасности, а также новые функции и ряд изменений в поведении, которые нарушат совместимость с устаревшими реализациями SSH, не поддерживающими повторное согласование ключей.

Клиенты и серверы SSH, не поддерживающие повторное согласование ключей, теперь не смогут взаимодействовать с OpenSSH. Проект удалил код обратной совместимости, который ранее позволял работать таким реализациям. Перед обновлением развёртываниям, использующим нестандартное или устаревшее ПО SSH, следует убедиться в поддержке повторного согласования ключей.
Ошибка в порядке проверок в клиенте ssh позволяла метасимволам командной оболочки в именах пользователей, переданных через командную строку, раскрываться через %-токены в файле ssh_config до их проверки. Для конфигураций, использующих токен %u в блоке Match exec, злоумышленник, способный контролировать имя пользователя, передаваемое в ssh, потенциально мог выполнить произвольные команды оболочки. Предоставление недоверенным данным доступа к аргументам командной строки SSH остаётся нежелательной практикой, независимо от наличия исправлений.
Ошибка в демоне sshd использовала некорректный алгоритм при сопоставлении опции principals="" в файле authorized_keys с субъектами, перечисленными в сертификате. Этот недостаток мог привести к неверному сопоставлению, если имя субъекта в сертификате содержит запятую. Для эксплуатации требуется запись в authorized_keys, содержащая более одного субъекта, и центр сертификации, готовый выпустить сертификат, кодирующий более одного из этих имён субъектов, разделённых запятой. Ошибка затрагивала только доверенные пользовательские ключи ЦС в authorized_keys; основной путь аутентификации по сертификатам с использованием TrustedUserCAKeys и AuthorizedPrincipalsFile не был затронут.
Изменение в поведении сертификатов устраняет давнюю проблему проектирования. Ранее сертификат с пустым разделом principals (субъектов) при использовании через authorized_keys principals="" рассматривался как универсальный (wildcard), что означало аутентификацию от имени любого пользователя, доверяющего выпустившему его центру сертификации (CA). Центр, случайно выпустивший такой сертификат, мог непреднамеренно предоставить широкий доступ. Новое поведение трактует пустой раздел principals как никогда не соответствующий ни одному субъекту. В выпуске также стандартизирована обработка универсальных шаблонов в субъектах сертификатов: они поддерживаются для сертификатов хостов и не поддерживаются для пользовательских сертификатов.
Демон sshd некорректно применял директивы PubkeyAcceptedAlgorithms и HostbasedAcceptedAlgorithms для ключей ECDSA. Если в любой из директив присутствовало имя любого алгоритма ECDSA, любой другой алгоритм ECDSA принимался независимо от его наличия в списке. Исправление устраняет эту уязвимость.
При загрузке файлов от имени суперпользователя с помощью scp в устаревшем режиме без флага -p программа не удаляла биты setuid и setgid у скачиваемых файлов. Проект проследил этот недостаток до оригинальной программы Berkeley rcp.
Опции -J и эквивалентная -oProxyJump теперь проверяют имена пользователей и хостов, переданные в командной строке. Проверка выявляет инъекции командной оболочки в конфигурациях, где эти опции доступны для ввода злоумышленником. Проверка применяется только к использованию из командной строки; записи в файлах конфигурации не проверяются.
Запрос подтверждения мультиплексирования через ControlMaster ask/autoask не проверялся для сессий мультиплексирования в режиме прокси с использованием ssh -O proxy.
Выпуск добавляет поддержку кодовых точек, назначенных IANA, для пересылки агента SSH, что соответствует черновой спецификации IETF draft-ietf-sshm-ssh-agent. Когда сервер сообщает о поддержке новых имён через сообщение EXT_INFO, OpenSSH будет отдавать им предпочтение. Поддержка существующих предстандартизированных расширений @openssh.com сохраняется. Агент ssh-agent также получает поддержку расширения query из того же черновика, а ssh-add добавляет флаг -Q для запроса расширений протокола агента.
sshd получает штраф invaliduser для PerSourcePenalties, применяемый при попытках входа с использованием имён пользователей, не соответствующих реальным учётным записям. Штраф по умолчанию составляет пять секунд, что соответствует существующему штрафу authfail, с возможностью настройки администратором на более длительные периоды. Разрешение времени штрафа также переходит на числа с плавающей запятой, что позволяет устанавливать штрафы короче одной секунды для событий с высокой частотой.
Новые команды мультиплексирования предоставляют операторам больше информации о запущенных сессиях. Команда ssh -Oconninfo и опция escape-последовательности ~I отображают информацию о подключении для активных сессий, а ssh -O channels сообщает, какие каналы открыты в запущенном процессе мультиплексора.
sshd добавляет опцию сервера GSSAPIDelegateCredentials, контролирующую принятие делегированных учётных данных, предлагаемых клиентами, что зеркалирует существующую клиентскую опцию. ssh-keygen получает поддержку записи ключей ED25519 в формате PKCS8. Директива RevokedHostKeys в ssh_config и директива RevokedKeys в sshd_config теперь принимают несколько файлов.
Также включено исправление проблем с вводом PIN-кода для ключей PKCS#11, появившихся в OpenSSH 10.1 и 10.2, вместе с улучшениями обработки подписей сертификатов FIDO/WebAuthn, исправлением сбоя sshd, связанного с отсутствующими директивами подсистем в блоках Match, и исправлением путаницы с именами пользователей PAM в портируемой ветке.

Скачать: Обзор угроз и защит идентификации SANS 2026