Релиз OpenSSH 7.4
Состоялся релиз OpenSSH 7.4, открытой реализации клиента и сервера для работы по протоколам SSH 2.0 и SFTP. В OpenSSH 7.4 удален код, связанный с использованием SSHv1 на стороне сервера. Поддержка протоколов SSH 1.3 и 1.5 на стороне клиента пока сохранена, но требует сборки со специальной опцией.
В следующем выпуске будет отключена возможность запуска OpenSSH без разделения привилегий и прекращена поддержка версий библиотеки OpenSSL до ветки 1.0.1. В августе 2017 года планируется полностью прекратить поддержку SSHv1 и удалить компоненты с реализаций шифров Blowfish и RC4, а также RIPE-MD160 HMAC, которые в настоящее время по умолчанию отключены в настройках. В будущих выпусках также планируют запретить использование любых RSA-ключей, размером менее 1024 бит.
Устраненные проблемы с безопасностью:
- Уязвимость, позволяющая осуществить загрузку сторонней разделяемой библиотеки и выполнить код с правами ssh-agent, передав запрос на загрузку модуля PKCS11 через перенаправленный (forwarded) канал к ssh-agent. Для осуществления атаки злоумышленник должен контролировать перенаправленным сокетом на стороне хоста с sshd и иметь возможность записи в ФС на хосте, где выполняется ssh-agent (обычно хост к клиентом ssh);
- При отключении режима разделения привилегий (включен по умолчанию), перенаправленный Unix-сокет создавался процессом sshd под пользователем root, вместо идентификатора текущего пользователя, что открывало возможный вектор для проведения атак. Для защиты введен запрет на использование перенаправления Unix-сокетов (forwarding) при отключенном разделении привилегий;
- В sshd блокирована теоретическая возможность утечки данных закрытого ключа хоста через realloc() в дочерние процессы при выполнении операции чтения ключа. Практически для ключей обычного размера утечка не проявляется;
- В sshd при работе менеджера разделяемой памяти, используемого для обеспечения сжатия на стадии до проведения аутентификации, при применении некоторых оптимизирующих компиляторов выявлена возможность отбрасывания проверок выхода за границы буфера. Также выявлено продолжение наличия доступа к данному менеджеру разделяемой памяти при отключении функции сжатия, что потенциально позволяет использовать его для развития атаки на привилегированный процесс мониторинга после успешной компрометации непривилегированного процесса, изолированного в sandbox-окружении;
- Устранены условия инициирования отказа в обслуживании, через исчерпание всех доступной sshd памяти, путем отправки множественных сообщений KEXINIT, обработка которых может потребовать до 128 Мб памяти на одно соединение;
- В sshd добавлены дополнительные проверки диапазонов адресов для директив AllowUser и DenyUsers. Ранее в данных директивах не запрещалось указание диапазонов с некорректной сетевой маской, таких как 127.1.2.3/55, под которые подпадают любые подсети.
Изменения, нарушающие совместимость:
- Из кода сервера удалена поддержка протокола SSH v.1;
- По умолчанию в клиенте отключено использование блочного шифра 3des-cbc - на современном этапе развития вычислительных систем 64-разрядные блочные шифры не могут считаться безопасными. Так как 3des-cbc определен в SSH RFC как единственный обязательный к реализации блочный шифр, его отключение может привести к проблемам при подключении к старым устройствам (необходимо будет изменить конфигурацию ssh);
- Из sshd удалена поддержка сжатия до прохождения стадии аутентификации, которая отключена по умолчанию более 10 лет. Экономия трафика от сжатия данных, передаваемых до прохождения аутентификации, ничтожна, по сравнению с рисками из-за выполнения дополнительного кода и появления потенциальных векторов для проведения атак. На стороне клиента ssh поддержка сжатия до аутентификации сохранена;
- В ssh-agent запрещена загрузка модулей PKCS11, расположение которых не подпадает под белый список путей, заслуживающих доверия;
- При задании через опцию "command=" принудительно выполняемой команды в сертификате и параметрах авторизированного ключа, sshd теперь отвергает сертификат, если заданные команды не идентичны;
- В sshd прекращена поддержка директивы UseLogin и управления сеансами на базе /bin/login;
Новые возможности:
- В ssh добавлен режим мультиплексирования прокси ("ssh -O proxy..."), реализованный по аналогии с аналогичным режимом в ssh-клиенте PuTTY и позволяющий мультиплексировать взаимодействие клиента с основным процессом через unix-сокет с использованием основного процесса как прокси для трансляции идентификаторов каналов. Данный режим позволяет применить мультиплексирование в системах без поддержки передачи файловых дескрипторов. Кроме того, воспользовавшись возможностью проброса unix-сокета на другой хост можно организовать мультиплексирование на разных машинах;
- В sshd добавлена директива конфигурации DisableForwaring, отключающая все виды проброса трафика (forwarding), в том числе проброс X11, агента, TCP, туннелей и unix-сокетов;
- В sshd и ssh добавлена поддержка метода обмена ключами "curve25519-sha256", который идентичен уже поддерживаемому методу "curve25519-sha256 at libssh.org";
- В sshd добавлена возможность использования директив ClientAliveInterval и ClientAliveCountMax внутри блоков Match;
- В sshd добавлена возможность использования escape-последовательностей (%*) в директиве AuthorizedPrincipalsCommand по аналогии с параметрами ключей, поддерживаемыми в AuthorizedKeysCommand;
- В sftp-server и ssh-agent(1) запрещено использование ptrace на платформе macOS через вызов ptrace(PT_DENY_ATTACH,..);
- Решены проблемы со сборкой с библиотекой libcrypto, скомпилированной без поддержки RIPEMD160;
- В contrib добавлено приложение gnome-ssh-askpass3 с поддержкой GTK+3.