Доступен релиз OpenSSH 5.9, открытой реализации клиента и сервера для работы по протоколам SSH (1.3, 1.5 и 2.0) и SFTP.
Из наиболее заметных улучшений можно отметить:
- Поддержка нового sandbox-режима "UsePrivilegeSeparation=sandbox", использующего rlimit и systrace для более жесткой изоляции кода, работающего на стадии до начала аутентификации (pre-auth privsep child). Если ранее, до начала аутентификации практиковался сброс прав до непривилегированного пользователя и помещение процесса в chroot-окружение /var/empty, то теперь появились механизмы, позволяющие воспрепятствовать выполнению системных вызовов к ядру и использованию сокетов. В случае проникновения через уязвимость в OpenSSH при использовании новой защиты злоумышленник не сможет эксплуатировать локальную уязвимость в ядре для повышения прав или провести атаку на другие хосты (создать сокет, запустить прокси и т.п.).
В различных системах для работы нового sandbox-режима используются различные механизмы. Например, в OpenBSD для ограничения числа допустимых системных вызовов задействована система systrace. Для Mac OS X и Darwin подготовлен модуль seatbelt, который использует подсистему sandbox для задания политики ограничения доступа к файловой системе и сетевым ресурсам. Для других систем возможно использование механизма setrlimit для установки в ноль лимитов на число файловых дескрипторов/сокетов, число процессов и размер создаваемого файла. В будущем планируется обеспечить поддержку таких механизмов, как Capsicum и изолированных пространств имен в Linux (pid/net namespaces).
- Добавлены основанные на хэше SHA256 новые HMAC-режимы проверки целостности: hmac-sha2-256, hmac-sha2-256-96, hmac-sha2-512 и hmac-sha2-512-96;
- Изменен метод ведения лога процессами в режиме изоляции привилегий, которые теперь не требуют наличия /dev/log в chroot, а передают сообщения через сокет, который обрабатывает основной master-процесс;
- В директивах AuthorizedKeysFile, UserKnownHostsFile и GlobalKnownHostsFile теперь можно указывать одновременно несколько путей, разделенных пробелом. Поддержка недокументированных опций AuthorizedKeysFile2 и GlobalKnownHostsFile2 прекращена - файлы authorized_keys2 и known_hosts2 теперь указываются через базовые опции;
- В директиве ControlPath на имя хоста назначения теперь можно ссылаться через "%L";
- В директиве "Host" добавлена поддержка операций отрицания, например: "Host *.example.org !c.example.org" примет "a.example.org" и "b.example.org", но отвергнет "c.example.org";
- В ssh_config добавлена поддержка опции RequestTTY, которая позволяет контролировать привязку к TTY по аналогии с опциями командной строки "-t/-tt/-T";
- В sshd реализация аутентификации GSSAPI теперь определяет, когда случаи сбоя на стороне сервера приводят к сбою аутентификации и не учитывает данные сбои при расчете лимита MaxAuthTries;
- В ssh-keygen добавлена опция "-A", при указании которой автоматически будут созданы все типы недостающих ключей с параметрами по умолчанию и пустым паролем. Опцию удобно использовать в скриптах инициализации системы;
- Возможность прекращения мультиплексирования соединений с сервером без обрыва уже установленных соединений ("ssh -O stop ...");
- В ssh-add добавлена возможность приема ключей из стандартного ввода ("ssh-add - < /path/to/key");
- В Portable OpenSSH устранены проблемы со сборкой кода, обеспечивающего поддержку SELinux; удалена поддержка ssh-rand-helper (случайные числа запрашиваются из OpenSSL или через PRNGd/EGD); обновлены .spec-файлы и скрипты инициализации для Linux; устранены проблемы со сборкой для платформ, без поддержки dlopen().