В OpenSSH устранена критическая уязвимость

14.01.2016 20:15

Доступно экстренное обновление OpenSSH 7.1p2, в котором устранена одна из самых опасных уязвимостей (CVE-2016-0777) за историю существования проекта. Проблема проявляется только в реализации клиента SSH и позволяет инициировать передачу серверу содержимого памяти процесса при соединении пользователя с подконтрольным злоумышленнику сервером. В публичном доступе уже опубликован прототип эксплоита, подтверждающий возможность получения в результате атаки находящихся в памяти закрытых ключей клиента.

Проблема связана с работой появившейся в OpenSSH 5.4 недокументированной функции роуминга, предназначенной для возобновления оборванного SSH-соединения. Серверная реализация роуминга так и не была включена в состав OpenSSH, но код клиента был добавлен в экспериментальном режиме и был включен по умолчанию. Уязвимости подвержены все версии с OpenSSH 5.4 по 7.1, включительно. В качестве обходного пути для блокирования уязвимости достаточно указать в ~/.ssh/config или /etc/ssh/ssh_config директиву "UseRoaming no", или при запуске ssh указывать опцию '-oUseRoaming=no'.

Эксплуатация уязвимости через применение MITM-атак с перенаправлением клиента на подставные серверы в результате подмены данных в DNS или вклинивание в транзитный трафик (например, при работе в публичных сетях WiFi) признана невозможной при аутентификации сервера по ключам.

Кроме того, в OpenSSH 7.1p2 также устранено переполнение буфера в коде разбора пакетов (CVE-2016-0778), проявляющееся в клиенте SSH при включенном режиме роуминга. Из-за другой ошибки в коде, появившейся в версии OpenSSH 6.8, переполнение буфера не подвержено эксплуатации - результатом атаки может быть лишь крах процесса.