Опубликован релиз OpenSSH 8.8, открытой реализации клиента и сервера для работы по протоколам SSH 2.0 и SFTP. Выпуск примечателен отключением по умолчанию возможности использования цифровых подписей на базе RSA-ключей с хэшем SHA-1 (“ssh-rsa”).
Прекращение поддержки подписей “ssh-rsa” обусловлено повышением эффективности коллизионных атак с заданным префиксом (стоимость подбора коллизии оценивается примерно в 50 тысяч долларов). Для проверки применения ssh-rsa в своих системах можно попробовать подключиться по ssh с опцией “-oHostKeyAlgorithms=-ssh-rsa”. Поддержка подписей RSA с хэшами SHA-256 и SHA-512 (rsa-sha2-256/512), которые поддерживаются с OpenSSH 7.2, оставлена без изменений.
В большинстве случаев прекращение поддержки “ssh-rsa” не потребует от пользователей каких-то ручных действий, так как в OpenSSH ранее по умолчанию была включена настройка UpdateHostKeys, выполняющая автоматический перевод клиентов на более надёжные алгоритмы. Для миграции применяется расширение протокола “[email protected]”, позволяющее серверу после прохождения аутентификации информировать клиента о всех доступных ключах хоста. В случае подключения к хостам с очень старыми версиями OpenSSH на стороне клиента можно выборочно вернуть возможность использования подписей “ssh-rsa”, добавив в ~/.ssh/config:
Host имя_старого_хоста HostkeyAlgorithms +ssh-rsa PubkeyAcceptedAlgorithms +ssh-rsa
В новой версии также устранена проблема с безопасностью, вызванная тем, что в sshd, начиная с выпуска OpenSSH 6.2, некорректно выполнялась инициализация группы пользователя при выполнении команд, заданных в директивах AuthorizedKeysCommand и AuthorizedPrincipalsCommand. Указанные директивы должны обеспечить запуск команд под другим пользователем, но на деле они наследовали список групп, используемых при запуске sshd. Потенциально такое поведение при наличии определённых системных настроек позволяло запущенному обработчику получить дополнительные привилегии в системе.
В примечании к новому выпуске также опубликовано предупреждение о намерении перевести по умолчанию утилиту scp на использование SFTP вместо устаревшего протокола SCP/RCP. В SFTP применяются более предсказуемые методы обработки имён и не используется обработка glob-шаблонов в именах файлов через shell на стороне другого хоста, создающая проблемы с безопасностью.
В частности, при применении SCP и RCP сервер принимает решение о том, какие файлы и каталоги отправить клиенту, а клиент лишь проверяет корректность возвращённых имён объектов, что в случае отсутствие должных проверок на стороне клиента позволяет серверу передать другие имена файлов, отличающиеся от запрошенных. Протокол SFTP лишён указанных проблем, но не поддерживает раскрытие спецпутей, таких как “~/”. Для устранения данного различия в прошлом выпуске OpenSSH в реализации SFTP-сервера было предложено новое расширение протокола SFTP для раскрытия путей ~/ и ~user/.