13.04.2024

Уязвимости KeyTrap и NSEC3, затрагивающие большинство реализаций DNSSEC

В различных реализациях протокола DNSSEC выявлены две уязвимости, затрагивающие DNS-серверы BIND, PowerDNS, dnsmasq и Unbound. Уязвимости позволяют добиться отказа в обслуживании DNS-резолверов, выполняющих валидацию при помощи DNSSEC, через создание высокой нагрузки на CPU, мешающей обработке других запросов. Для совершения атаки достаточно отправить на DNS-резолвер, использующий DNSSEC, запрос, приводящий к обращению к специально оформленной DNS-зоне на сервере злоумышленника.

Выявленные проблемы:

  • CVE-2023-50387 (кодовое имя KeyTrap) — при обращении к специально оформленным DNS-зонам приводит к отказу в обслуживании из-за создания значительной нагрузки на CPU и длительного выполнения проверки DNSSEC. Для совершения атаки необходимо разместить на подконтрольном атакующему DNS-сервере доменную зону с вредоносными настройками, а также добиться обращения этой зоне рекурсивного DNS-сервера, отказа в обслуживании которого добивается атакующий.

    Вредоносные настройки сводятся к использованию для зоны комбинации из конфликтующих между собой ключей, записей RRSET и цифровых подписей. Попытка проверки с использованием данных ключей приводит к выполнению длительных ресурсоёмких операций, которые могут полностью нагружать CPU и блокировать обработку других запросов (например, утверждается, что при атаке на BIND удалось остановить обработку других запросов на 16 часов).

  • CVE-2023-50868 (кодовое имя NSEC3) — отказ в обслуживании из-за выполнения значительных вычислений при вычислении хэшей в записях NSEC3 (Next Secure v3) при обработке специально оформленных ответов DNSSEC. Метод атаки напоминает первую уязвимость, за исключением того ,что на DNS-сервере злоумышленника создаётся специально оформленный набор записей NSEC3 RRSET.

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

В качестве мер для блокирования уязвимостей в резолверах ограничено максимальное число ключей DNSSEC, задействованных в процессе построения цепочки доверия, и максимальное число вычислений хэшей для NSEC3, а также лимитированы повторные попытки проверки для каждого RRSET (комбинации ключей и подписей) и каждого ответа сервера.

Уязвимости устранены в обновлениях Unbound (1.19.1), PowerDNS Recursor (4.8.6, 4.9.3, 5.0.2), Knot Resolver 5.7.1, dnsmasq (2.90) и BIND (9.16.48, 9.18.24 и 9.19.21). Статус устранения уязвимостей в дистрибутивах можно оценить на данных страницах: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware, NetBSD, FreeBSD.

В версиях DNS-сервера BIND 9.16.48, 9.18.24 и 9.19.21 дополнительно устранено ещё несколько уязвимостей:

  • CVE-2023-4408 — разбор больших DNS-сообщений может привести к созданию высокой нагрузки на CPU.
  • CVE-2023-5517 — запрос специально оформленной обратной зоны может привести к аварийному завершению из-за срабатывания assert-проверки. Проблема проявляется только в конфигурациях с включённой настройкой «nxdomain-redirect».
  • CVE-2023-5679 — рекурсивное определение хоста может привести к аварийному завершению из-за срабатывания assert-проверки на системах с включённой поддержкой DNS64 и «serve-stale» (настройки, stale-cache-enable и stale-answer-enable) .
  • CVE-2023-6516 — специально оформленный рекурсивные запросы могут привести к исчерпанию доступной процессу памяти.

Источник: https://www.opennet.ru/opennews/art.shtml?num=60599 Источник.