После шести месяцев разработки представлен релиз OpenSSH 8.9, открытой реализации клиента и сервера для работы по протоколам SSH 2.0 и SFTP. В новой версии в sshd устранена уязвимость, потенциально позволяющая получить доступ без аутентификации. Проблема вызвана целочисленным переполнением в коде аутентификации, но эксплуатация возможна только в сочетании с другими логическими ошибками в коде.
В текущем виде уязвимость не эксплуатируема при включении режима разделения привилегий, так как её проявление блокируют отдельные проверки, выполняемые в коде отслеживания разделения привилегий. Режим разделения привилегий активирован по умолчанию в 2002 году, начиная OpenSSH 3.2.2, и является обязательным начиная с выпуска OpenSSH 7.5, опубликованного в 2017 году. Кроме того, в переносимых версиях OpenSSH начиная с выпуска 6.5 (2014 год) уязвимость блокируется компиляцией с включением флагов защиты от целочисленных переполнений.
Другие изменения:
- В переносимой версии OpenSSH в sshd удалена встроенная поддержка хэширования паролей с использованием алгоритма MD5 (для возвращения допускается связывание с внешними библиотеками, такими как libxcrypt).
- В ssh, sshd, ssh-add и ssh-agent реализована подсистема для ограничения пересылки и использования ключей, добавленных в ssh-agent.
Подсистема позволяет задавать правила, определяющие как и где можно использовать ключи в ssh-agent. Например, для добавления ключа, который может быть использован только для проведения аутентификации при подключении любого пользователя к хосту scylla.example.org, пользователя perseus к хосту cetus.example.org и пользователя
medea к хосту charybdis.example.org с перенаправлением через промежуточный хост scylla.example.org, можно использовать следующую команду: $ ssh-add -h “[email protected]” -h “scylla.example.org” -h “scylla.example.org>[email protected]” ~/.ssh/id_ed25519 - В ssh и sshd в список KexAlgorithms, определяющий порядок выбора методов обмена ключами, по умолчанию добавлен гибридный алгоритм “[email protected]” (ECDH/x25519 + NTRU Prime), стойкий к подбору на квантовых компьютерах. В версии OpenSSH 8.9 данный метод согласования добавлен между методами ECDH и DH, но в следующем выпуске его планируют задействовать по умолчанию.
- В ssh-keygen, ssh и ssh-agent улучшена обработка ключей
FIDO-токенов, используемых для верификации устройства, включая ключи для биометрической аутентификации. - В ssh-keygen добавлена команда “ssh-keygen -Y match-principals” для проверки имён пользователей в файле со списком разрешённых имён.
- В ssh-add и ssh-agent предоставлена возможность добавления в ssh-agent FIDO-ключей, защищённых PIN-кодом (запрос PIN выводится в момент аутентификации).
- В ssh-keygen разрешён выбор алгоритма хэширования (sha512 или sha256) во время формирования подписи.
- В ssh и sshd для повышения производительности обеспечено чтение сетевых данных напрямую в буфер входящих пакетов, минуя промежуточную буферизацию в стеке. Аналогично реализовано прямое помещение получаемых данных в канальный буфер.
- В ssh в директиве PubkeyAuthentication расширен список поддерживаемых параметров (yes|no|unbound|host-bound) для предоставления возможности выбора варианта используемого расширения протокола.
В одном из следующих выпусков планируется перевести по умолчанию утилиту scp на использование SFTP вместо устаревшего протокола SCP/RCP. В SFTP применяются более предсказуемые методы обработки имён и не используется обработка glob-шаблонов в именах файлов через shell на стороне другого хоста, создающая проблемы с безопасностью. В частности, при применении SCP и RCP сервер принимает решение о том, какие файлы и каталоги отправить клиенту, а клиент лишь проверяет корректность возвращённых имён объектов, что в случае отсутствие должных проверок на стороне клиента позволяет серверу передать другие имена файлов, отличающиеся от запрошенных. Протокол SFTP лишён указанных проблем, но не поддерживает раскрытие спецпутей, таких как “~/”. Для устранения данного различия в прошлом выпуске OpenSSH в реализации SFTP-сервера было предложено новое расширение протокола SFTP для раскрытия путей ~/ и ~user/.