OpenSSH 6.0
🕛 24.04.2012, 09:45
Представлен релиз 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 filter. Так как подсистема seccomp filter пока не включена в состав основного ядра, её поддержка в дистрибутивах сильно ограничена. Тем не менее, дело скоро должно сдвинуться с мёртвой точки, так как поддержка seccomp filter будет обеспечена по умолчанию в 64-разрядной сборке Ubuntu 12.04. Стимулировать интеграцию seccomp filter также должен факт обеспечения поддержки данной технологии в важнейших сетевых приложениях, таких как vsftpd и OpenSSH. Кроме того, компания Google намерена активировать seccomp filter для усиления защиты в проекте Chromium.
Принцип работы seccomp filter сводится к ограничению доступа к системным вызовам. При этом, важной особенностью является то, что логика выставляемых ограничений задаётся на уровне защищаемого приложения, а не через задание внешних ограничений, как в случае AppArmor или SELinux. В код программы добавляется структура с перечнем допустимых системных вызовов (например, ALLOW_SYSCALL) и реакции в случае несовпадения (например, KILL_PROCESS). Доступ к системным вызовам определяется в виде правил, оформленных в BPF-представлении (Berkeley 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); Устранено несколько утечек памяти и файловых дескрипторов.