Опубликованы корректирующие обновления стабильных веток DNS-сервера BIND 9.11.31 и 9.16.15, а также находящейся в разработке экспериментальной ветки 9.17.12. В новых выпусках устранены три уязвимости, одна из которых (CVE-2021-25216) приводит к переполнению буфера. На 32-разрядных системах уязвимость может быть эксплуатирована для удалённого выполнения кода злоумышленника через отправку специально оформленного запроса GSS-TSIG. На 64-системах проблема ограничивается крахом процесса named.
Проблема проявляется только при включении механизма GSS-TSIG, активируемого при помощи настроек tkey-gssapi-keytab и tkey-gssapi-credential. GSS-TSIG отключён в конфигурации по умолчанию и обычно применяется в смешанных окружениях, в которых BIND сочетается с контроллерами домена Active Directory, или при интеграции с Samba.
Уязвимость вызвана ошибкой в реализации механизма SPNEGO (Simple and Protected GSSAPI Negotiation Mechanism), применяемого в GSSAPI для согласования используемых клиентом и сервером методов защиты. GSSAPI используется в качестве высокоуровневого протокола для защищённого обмена ключами при помощи расширения GSS-TSIG, применяемого в процессе проверки подлинности динамических обновлений DNS-зон.
Так как критические уязвимости во встроенной реализации SPNEGO находили и ранее, реализация данного протокола удалена из кодовой базы BIND 9. Для пользователей, которым необходима поддержка SPNEGO, рекомендовано использовать внешнюю реализацию, предоставляемую системной библиотекой
GSSAPI (предоставляется в MIT Kerberos и Heimdal Kerberos).
Пользователи старых версий BIND в качестве обходного пути блокирования проблемы, могут отключить GSS-TSIG в настройках (параметры tkey-gssapi-keytab и tkey-gssapi-credential) или пересборать BIND без поддержки механизма SPNEGO (опция “–disable-isc-spnego” в скрипте “configure”). Проследить за появлением обновлений в дистрибутивах можно на страницах: Debian, SUSE, Ubuntu, Fedora, Arch Linux, FreeBSD, NetBSD. Пакеты RHEL и ALT Linux собираются без встроенной поддержки SPNEGO.
Дополнительно в рассматриваемых обновлениях BIND устранено ещё две уязвимости:
- CVE-2021-25215 – крах процесса named при обработке записей DNAME (редирект обработки части поддоменов), приводящих к добавлению в секцию ANSWER дубликатов. Для эксплуатации уязвимости на авторитетных DNS-серверах требуется внесение изменений в обрабатываемые DNS-зоны, а для рекурсивных серверов проблемная запись может быть получена после обращения к авторитетному серверу.
- CVE-2021-25214 – крах процесса named при обработке специально оформленного входящего запроса IXFR (используется для инкрементальной передачи между DNS-серверами изменений в зонах DNS).
Проблеме подвержены только системы, разрешившие передачу зон DNS с сервера атакующего (обычно передача зон используется для синхронизации master- и slave-серверов и выборочно разрешается только для заслуживающих доверие серверов). В качестве обходного пути защиты можно отключить поддержку IXFR при помощи настройки “request-ixfr no;”.