Состоялся релиз 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, передав запрос на загрузку модуля PKCS#11 через перенаправленный (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 запрещена загрузка модулей PKCS#11, расположение которых не подпадает под белый список путей, заслуживающих доверия;
  • При задании через опцию "command=" принудительно выполняемой команды в сертификате и параметрах авторизированного ключа sshd теперь отвергает сертификат, если заданные команды не идентичны;
  • В sshd прекращена поддержка директивы UseLogin и управления сеансами на базе /bin/login;

Новые возможности:

  • В ssh добавлен режим мультиплексирования прокси ("ssh -O proxy ..."), реализованный по аналогии с подобным режимом в ssh-клиенте PuTTY. Новый режим позволяет мультиплексировать взаимодействие клиента с основным процессом через unix-сокет с использованием основного процесса как прокси для трансляции идентификаторов каналов. Данный режим позволяет применить мультиплексирование в системах без поддержки передачи файловых дескрипторов. Кроме того, воспользовавшись возможностью проброса unix-сокета на другой хост, можно организовать мультиплексирование на разных машинах;
  • В sshd добавлена директива конфигурации DisableForwarding, отключающая все виды проброса трафика (forwarding), в том числе проброс X11, агента, TCP, туннелей и unix-сокетов;
  • В sshd и ssh добавлена поддержка метода обмена ключами "curve25519-sha256", который идентичен уже поддерживаемому методу "curve25519-sha256@libssh.org";
  • В sshd добавлена возможность использования директив ClientAliveInterval и ClientAliveCountMax внутри блоков Match;
  • В sshd добавлена возможность использования escape-последовательностей (%*) в директиве AuthorizedPrincipalsCommand по аналогии с параметрами ключей, поддерживаемыми в AuthorizedKeysCommand;
  • В sftp-server и ssh-agent на платформе macOS добавлен вызов ptrace(PT_DENY_ATTACH, ..), запрещающий использование ptrace;
  • Решены проблемы со сборкой с библиотекой libcrypto, скомпилированной без поддержки RIPEMD160;
  • В contrib добавлено приложение gnome-ssh-askpass3 с поддержкой GTK+3.


Источник: http://www.opennet.ru/opennews/art.shtml?num=45719