Обнаружена удалённо эксплуатируемая уязвимость в Glibc

Обнаружена удалённо эксплуатируемая уязвимость в Glibc

Исследователи безопасности из компаний Google и Red Hat выявили опасную уязвимость (СVE-2015-7547) в системной библиотеке Glibc. Уязвимостьпроявляется при вызове приложениями функции getaddrinfo() и может привести к выполнению кода в системе в случае возврата DNS-сервером специально оформленного ответа.

Он может быть сформирован злоумышленником в результате MITM-атаки, при получении контроля над DNS-сервером, отвечающим за отдачу запрошенной DNS-зоны, или при обращении к домену, за обработку которого отвечает DNS-сервер атакующих. Таким образом, для совершения успешной атаки злоумышленникам достаточно подтолкнуть пользователя обратиться к подконтрольному им доменному имени из любой программы, в которой применяется вызов getaddrinfo().

Проблема вызвана переполнением буфера в NSS-модуле nss_dns, которое присутствует в обработчиках запросов как по UDP (send_dg), так и по TCP (send_vc). Уязвимость проявляется при вызове функции getaddrinfo в режимах AF_UNSPEC или AF_INET6, использование которых приводит к одновременной отправке двух запросов для получения данных для типов записей A (IPv4) и AAAA (IPv6). Суть проблемы в том, что буфер для сохранения результата создаётся ненадлежащего размера и хвост ответа записывается в область стека за пределом буфера (в буфер 2048 может придти до 65535 байт данных). Для демонстрации уязвимости подготовлен рабочий прототип эксплоита, сообщает opennet.ru.

Проблема присутствует с мая 2008 года, начиная с выпуска glibc 2.9. Инженеры Google обратили внимание на уязвимость столкнувшись с повторяющимся крахом клиента SSH при попытке обращения к одному из хостов. В процессе разбора уязвимости инженеры Google с удивлением обнаружили, что информация об уязвимости уже сообщалась разработчикам Glibc людьми столкнувшимися с похожими проблемами и находится в системе отслеживания ошибок Glibc с 13 июля 2015 года. Написав о проблеме сопровождающим Glibc, исследователи узнали, что два сотрудника Red Hat тоже обратили внимание на данную ошибку и занимаются её анализом.

Исправление пока доступно в виде патча. Обновления с устранением уязвимости пока выпущены только для RHEL 6/7 и Debian (eglibc, glibc). Оценить появление обновлений в других дистрибутивах можно на следующих страницах: Ubuntu, Fedora,openSUSE, SLES, Slackware, Gentoo, CentOS. В качестве обходных мер защиты рекомендуется ограничить на межсетевом экране максимальный размер DNS-ответов значением в 512 байт для UDP и 1024 байт для TCP.