SSH-клиенты и серверы, не поддерживающие перегенерацию ключей, в будущем не смогут взаимодействовать с OpenSSH. Проект удалил код, обеспечивавший совместимость с ошибками, который ранее позволял таким реализациям продолжать работу. При развертывании нестандартного или устаревшего программного обеспечения SSH необходимо проверить поддержку перегенерации ключей перед обновлением.
Внедрение кода в оболочку через имена пользователей ssh
Недостаток в синхронизации проверки в клиенте ssh позволял метасимволам оболочки в именах пользователей, переданных по командной строке, расширяться через %-tokens в ssh_config до их проверки. В конфигурациях, использующих токен %u в блоке Match exec, злоумышленник, способный контролировать имя пользователя, передаваемое в ssh, потенциально мог выполнять произвольные команды оболочки. Не рекомендуется подвергать аргументы командной строки SSH неконтролируемому вводу, независимо от мер по снижению риска.
Ошибка сопоставления субъектов сертификата
Ошибка в sshd заключалась в использовании некорректного алгоритма при сопоставлении опции authorized_keys principals="" с субъектами, перечисленными в сертификате. Эта уязвимость могла привести к некорректному сопоставлению, если имя субъекта в сертификате содержало запятую. Для эксплуатации уязвимости требуется запись authorized_keys, содержащая более одного субъекта, и центр сертификации, готовый выдать сертификат, в котором более одного из этих имен субъектов закодировано с разделителем запятой. Ошибка затрагивала только ключи центров сертификации, которым доверяют пользователи, в authorized_keys; основной путь аутентификации сертификатов с использованием TrustedUserCAKeys и AuthorizedPrincipalsFile не был затронут.
Пустые субъекты сертификатов теперь рассматриваются как несоответствующие
Отдельное изменение поведения сертификатов устраняет давнюю проблему проектирования. Ранее сертификат с пустым разделом субъектов рассматривался как подстановочный знак при использовании через authorized_keys principals="", что означало, что он аутентифицировался как любой пользователь, доверяющий выдающему ЦС. ЦС, случайно выдавшая такой сертификат, неосознанно предоставляла широкий доступ. Новое поведение рассматривает пустой раздел субъектов как никогда не совпадающий ни с одним субъектом. В этом выпуске также стандартизирована обработка подстановочных знаков в субъектах сертификатов: подстановочные знаки поддерживаются для сертификатов хостов, но не поддерживаются для сертификатов пользователей.
Исправлено принудительное применение алгоритмов ECDSA
sshd некорректно принудительно применял директивы PubkeyAcceptedAlgorithms и HostbasedAcceptedAlgorithms к ключам ECDSA. Если в любой из директив появлялось имя любого алгоритма ECDSA, то принимался любой другой алгоритм ECDSA, независимо от того, присутствовал ли он в списке. Исправление устраняет эту уязвимость.
Загрузка scp root сохраняет биты setuid/setgid
При загрузке файлов от имени root с использованием scp в устаревшем режиме без флага -p утилита не удаляла биты setuid и setgid из загруженных файлов. Проект отследил источник этой уязвимости до оригинальной программы Berkeley rcp.
Проверка входных данных ProxyJump
Опции -J и эквивалентные -oProxyJump теперь проверяют имена пользователей и хостов, переданные в командной строке. Проверка выявляет внедрение в оболочку в конфигурациях, где эти опции подвержены вредоносному вводу. Проверка применяется только к использованию в командной строке; записи в конфигурационных файлах не проверяются.
Исправление подтверждения мультиплексирования соединений
Подтверждение мультиплексирования, запрашиваемое через ControlMaster ask/autoask, не проверялось для сеансов мультиплексирования в режиме прокси с использованием ssh -O proxy.
Добавления в протокол ssh-agent
В этом выпуске добавлена поддержка кодовых точек, назначенных 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 и опция экранирования ~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 в переносимой ветке.