Критическая уязвимость библиотеки glibc позволяет осуществлять удаленное выполнение кода
Исследователи Google обнаружили критическую уязвимость в библиотеке glibc (GNU C Library). В функции getaddrinfo(), которая отвечает за разбор доменных имен, происходит переполнение буфера — ошибка позволяет злоумышленникам осуществлять удаленное выполнение кода.
Эксплуатация уязвимости, получившей обозначение CVE-2015-7547, возможна в случаях, когда уязвимые устройства или приложения отправляют запросы контролируемым хакерами доменам и серверам, а также в случае проведения атаки типа man-in-the-middle.
В своем блоге исследователи Google пишут, что обнаружили уязвимость, когда в используемом ими SSH-клиенте при попытке соединения с определенным адресом раз за разом начала возникать ошибка сегментации. В ходе разбирательств выяснилось, что всему виной переполнение буфера в glibc, и что эта ошибка может приводить к удаленному выполнению кода.
Библиотека glibc используется в большом количестве популярных Linux-приложений — по утверждениям исследователей, уже подтверждена информация об уязвимости утилит wget, SSH, sudo и curl. Общее число уязвимых приложений столь велико, что составить полный список не представляется возможным — в разговоре с изданием Ars Technica исследователь безопасности Кен Уайт заявил, что уязвимость содержится во всех дистрибутивах Linux, а также языках программирования Python, PHP, Ruby on Rails. Есть сообщения о том, что ошибка содержится и в большей части приложений для работы с криптовалютой биткоин.
К удивлению исследователей, оказалось, что мейнтейнеры, ответственные за glibc, знали об ошибке еще в июле прошлого года. Кроме того, выяснилось, что параллельно с экспертами Google и независимо от них уязвимость обнаружили и специалисты Red Hat — продукты этой компании также уязвимы (список). В итоге две команды объединили усилия для создания патча.
На Github также доступна proof-of-concept-реализация эксплоита.
Вчера обсуждали на HN.
Для end-of-life дистров по идее можно спастить файрволом или локальным рекурсивным резолвером, которые дропают ответы больше 512 байт. Не без ущерба, конечно же.
Файрволом:
iptables -t filter -A INPUT -p udp --sport 53 -m connbytes --connbytes 512: --connbytes-dir reply --connbytes-mode bytes -j DROP
iptables -t filter -A INPUT -p tcp --sport 53 -m connbytes --connbytes 512: --connbytes-dir reply --connbytes-mode bytes -j DROP
BIND 9.3.2+, в options в named.conf:
edns-udp-size: 512
Unbound, в server в unbound.conf:
edns-buffer-size: 512
Еще можно избавиться от резолва в некоторых местах, как sshd, если прописать в /etc/hosts.allow IP адреса, с которых вы ходите на сервер:
sshd : 1.2.3.4 : allow
sshd : ALL : deny
еще рекомендуют:
В /etc/resolv.conf добавить:
options edns0
с фаерфолом еще такой рецепт есть
iptables -N UDP-DNS-LIMIT
iptables -N TCP-DNS-LIMIT
iptables -A UDP-DNS-LIMIT -p udp --sport 53 -m length --length 0:512 -j ACCEPT
iptables -A UDP-DNS-LIMIT -p udp --sport 53 -j DROP
iptables -A TCP-DNS-LIMIT -p tcp --sport 53 -m length --length 0:1024 -j ACCEPT
iptables -A TCP-DNS-LIMIT -p tcp --sport 53 -j DROP
iptables -I INPUT -p tcp --sport 53 -j TCP-DNS-LIMIT
iptables -I INPUT -p udp --sport 53 -j UDP-DNS-LIMIT
iptables -I FORWARD -p tcp --sport 53 -j TCP-DNS-LIMIT
iptables -I FORWARD -p udp --sport 53 -j UDP-DNS-LIMIT
С опеннет: "Исправление пока доступно в виде патча. Обновления с устранением уязвимости пока выпущены только для RHEL6/7 и Debian (eglibc, glibc). Оценить появление обновлений в других дистрибутивах можно... ".
В Gentoo тоже обновление прилетело.
Ви маєте увійти під своїм обліковим записом