Критическая уязвимость в Glibc, которая может привести к удалённому выполнению кода

В системной библиотеке Glibc выявлена критическая уязвимость (CVE-2015-0235), которая может использоваться для организации выполнения кода в системе и проявляется при обработке специально оформленных данных в функциях gethostbyname() и gethostbyname2(), которые используются во многих программах для преобразования имени хоста в IP-адрес. По степени опасности уязвимость, которая получила кодовое имя GHOST, сравнима с уязвимостями в Bash и OpenSSL. Для демонстрации уязвимости подготовлен рабочий прототип эксплоита, позволяющий организовать удалённое выполнение кода на почтовом сервере Exim, обойдя все доступные механизмы дополнительной защиты (ASLR, PIE, NX) на 32- и 64-разрядных системах.

Проблема вызвана переполнением буфера в функции __nss_hostname_digits_dots(), используемой в gethostbyname() и gethostbyname2(). Несмотря на то, что вызовы gethostbyname() и gethostbyname2() устарели (следует использовать getaddrinfo()), они продолжают применяться для преобразования имени хоста во многих актуальных приложениях. Атака затруднена в серверных программах, которые используют в gethostbyname() для обратной проверки данных DNS, а также в привилегированных suid-утилитах, в которых вызов getaddrinfo() применяется только при сбое выполнения inet_aton(). Опасность представляют в основном приложения, передающие в getaddrinfo() данные, полученные извне, такие как почтовые серверы и манипулирующие именами хостов утилиты. Например, уязвимость подтверждена в Exim (при использовании настроек «helo_verify_hosts», «helo_try_verify_hosts» или ACL «verify = helo»), procmail и clockdiff.

Примечательно, что проблема присутствует в коде Glibc начиная с версии 2.2, выпущенной в ноябре 2000 года. При этом проблема была молча устранена в мае 2013 года без указания на то, что исправленная ошибка имеет отношение к серьёзным проблемам с безопасностью. Glibc 2.18 и более новые выпуски не подвержены уязвимости. Уязвимость не проявляется в дистрибутивах, построенных на основе свежих версий Glibc, например, в последних версиях Fedora и Ubuntu.

При этом, уязвимости подвержены длительно поддерживаемые промышленные дистрибутивы, которые требуют незамедлительного обновления. В частности, проблема проявляется в Debian 7 (wheezy), Red Hat Enterprise Linux 6 и 7, CentOS 6 и 7, Ubuntu 10.04 и 12.04, SUSE Linux Enterprise 10 и 11. В настоящее время обновление уже выпущено для Ubuntu 10.04/12.04, Debian 7 и RHEL 7,6,5. На стадии подготовки обновления для SUSE и CentOS. После обновления glibc следует не забыть перезапустить сетевые приложения.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.