Опасная уязвимость в ProFTPD и ftpd из состава FreeBSD

2 декабря 2011 года

В списке рассылки Full-Disclosure опубликован эксплоит, позволяющий удалённому злоумышленнику выполнить на сервере код с правами root, при условии если у атакующего имеется рабочий пользовательский аккаунт в системе, работа которого ограничена домашней директорией через помещение в chroot (во FreeBSD ftpd используется /etc/ftpchroot). Уязвимости также подвержены анонимные FTP-серверы, на которых пользователь имеет возможность записи в директорию /home или в /lib и /etc (например, системы анонимной загрузки файлов с доступным на запись корнем). Наличие уязвимости подтверждено в ftpd из состава FreeBSD 8.2 и в ProFTPD, включая последний выпуск 1.3.4a.

Уязвимость в ftpd вызвана особенностью выставления uid/euid для рабочего процесса: во время работы с файлами меняется только euid, который влияет на операции с файлами, а uid остаётся неизменным. При выполнении /bin/ls после вызова команды STAT отсутствует проверка на сочетание uid=0 и euid!=0, что приводит к попыткам загрузки библиотеки /lib/nss_compat.so с правами uid 0 (root). Разместив фиктивную библиотеку "~/lib/nss_compat.so.1" в домашней директории и создав "~/etc/nsswitch.conf" для активации NSS, при изоляции аккаунта в chroot в рамках данной домашней директории, библиотека окажется в директории /lib относительно нового корня и будет вызвана из libc с uid root и euid текущего непривилегированного пользователя.

Официальных патчей с исправлением проблемы пока нет, но для FreeBSD на скорую руку подготовлен неофициальный патч, позволяющий блокировать работу эксплоита. Дополнительно опубликован видеоролик с детальной демонстрацией работы эксплоита. Следует заметить, что код с правами root запускается после создания chroot, что ограничивает его работу директорией пользователя.

Дополнение: Сообщается об обнаружении похожей проблемы в ftp-сервере vsftpd, но уязвимость больше носит теоретический характер, так как чрезвычайно сложно эксплуатируема, требует нереальных условий (наличие в системе версии glibc с уязвимостью, исправленной ещё в 2009 году) и в конечном итоге может привести лишь к выполнению кода с правами непривилегированного пользователя, что практически исключает выход за пределы chroot (для повышения привилегий из chroot можно дополнительно эксплуатировать локальную уязвимость в ядре). Проблема присутствует не в самом vsftpd, а в glibc. В случае с vsftpd в каталог "~/usr/share/zoneinfo" помещаются специально оформленные файлы временных зон, которые эксплуатируют переполнение буфера в старых версиях библиотеки glibc, которая пытается загрузить данные файлы из иерархии chroot при выполнении определённых FTP-команд.

Источники

править
 
 
Creative Commons
Эта статья содержит материалы из статьи «Опасная уязвимость в ProFTPD и ftpd из состава FreeBSD», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.