Релиз OpenSSH 6.0

Представлен релиз OpenSSH 6.0, открытой реализации клиента и сервера для работы по протоколам SSH (1.3, 1.5 и 2.0) и SFTP. Несмотря на значительный номер версии, изменений представлено относительно немного, по сравнению с прошлыми выпусками. Релиз позиционируется как корректирующий, а номер версии стоит рассматривать как плавное продолжение нумерации в десятичном исчислении, при которой после 5.9 выпускается не версия 5.10, а 6.0. Заметное улучшение внесено только в Portable-версию, в которой добавлена поддержка специфичного для Linux нового режима изоляции "seccomp sandbox".

Основные изменения:

  • Новый режим изоляции привилегий для Linux - "seccomp sandbox", автоматически включаемый при сборке на системах, поддерживающих данную технологию. Так как подсистема seccomp пока не включена в состав основного ядра, её поддержка в дистрибутивах сильно ограничена. Тем не менее, дело скоро должно сдвинуться с мёртвой точки, так как поддержка seccomp будет обеспечена по умолчанию в 64-разрядной сборке Ubuntu 12.04. Стимулировать интеграцию seccomp также должен факт обеспечения поддержки данной технологии в важнейших сетевых приложениях, таких как vsftpd и OpenSSH. Кроме того, компания Google намерена активировать seccomp для усиления защиты в проекте Chromium.

    Принцип работы seccomp сводится к ограничению доступа к системным вызовам. При этом, важной особенностью является то, что логика выставляемых ограничений задаётся на уровне защищаемого приложения, а не через задание внешних ограничений, как в случае AppArmor или SELinux. В код программы добавляется структура с перечнем допустимых системных вызовов (например, ALLOW_SYSCALL) и реакции в случае несовпадения (например, KILL_PROCESS). Доступ к системным вызовам определяется в виде правил, оформленных в BPF-представлении (Berkley Packet Filter), которое получило распространение в системах фильтрации сетевых пакетов.

    Система seccomp позволяет реализовывать достаточно сложные правила доступа, учитывающие передаваемые и возвращаемые аргументы. Программа сама определяет какие системные вызовы ей необходимы и какие параметры допустимы, все остальные системные вызовы блокируются, что позволяет ограничить возможности атакующего в случае эксплуатации уязвимости в защищённом при помощи seccomp приложении. Возможность задания фильтров аргументов позволяет также защититься от большинства атак, эксплуатирующих уязвимости в системных вызовах. Например, выявленные за последние годы критические уязвимости в glibc и ядре Linux, такие как AF_CAN, sock_sendpage и sys_tee, успешно блокируются при надлежащем использовании seccomp.

  • В ssh-keygen добавлены дополнительные точки контроля для экранирования модулей;
  • В ssh-add добавлена опция "-k" для загрузки только ключей, пропуская загрузку сертификатов;
  • В sshd добавлена поддержка указания масок в опции PermitOpen. Например, теперь можно указывать такие правила, как "PermitOpen localhost:*";
  • В ssh реализована возможность отмены локального или удалённого переброса портов, осуществлённого через мультиплексированный сокет, обслуживающих также другие соединения. Для отмены проброса следует использовать "ssh -O cancel -L xx:xx:xx -R yy:yy:yy user_at_host";
  • Поддержка отмены локального/динамического проброса из командной строки, активируемой через "~C";
  • Добавлена опциональная поддержка LDNS, библиотеки для выполнения DNS-запросов (resolver), поддерживающей DNSSEC и распространяемой под лицензией BSD;
  • Устранены проблемы со сборкой во FreeBSD, при использовании варианта libutil с функцией openpty(), но без login();
  • Налажена сборка на основании включённого в состав spec-файла для создания RPM-пакетов;
  • Переработана проверка версии OpenSSL, что позволяет запускать исполняемые файлы OpenSSH с более новыми ветками OpenSSL, чем использовались для сборки (ранее проверялась только версия патча, т.е. если OpenSSH собран с 1.0.0h, то он работал с 1.0.0i, а теперь ещё будет работать и с 1.0.1a);
  • Устранено несколько утечек памяти и файловых дескрипторов.

© OpenNet