Вектор атаки MaginotDNS использует некорректные проверки в DNS-софте

Вектор атаки MaginotDNS использует некорректные проверки в DNS-софте

Вектор атаки MaginotDNS использует некорректные проверки в DNS-софте

Группа специалистов разработала новый вектор атаки класса DNS cache poisoning, получивший название «MaginotDNS». Этот метод нацелен на CDNS-резолверы и может скомпрометировать домены верхнего уровня TLD.

Эксперты смогли создать MaginotDNS из-за несоответствия в имплементации проверок безопасности, которые реализованы в различных софтовых и серверных режимах DNS. В итоге перед вектором уязвима приблизительно треть всех серверов CDNS.

Исследователи представили свой отчёт на конференции Black Hat 2023. Сейчас, по их словам, проблема решена на программном уровне. Смысл MaginotDNS в том, чтобы обойти защитные механизмы, которые ранее были введены для борьбы с атаками вида DNS cache poisoning.

Резолверы CDNS поддерживают как рекурсивный режим, так и переадресацию запросов. Такой подход используется провайдерами для снижения затрат и более продуманного контроля доступа.

 

Специалисты нашли несоответствия в проверках DNS-софта: BIND9 (CVE-2021-25220), Knot Resolver (CVE-2022-32983), Microsoft DNS и Technitium (CVE-2021-43105).

В отдельных случаях даже попадались крайне уязвимые конфигурации: например, все записи обрабатывались так, будто находились в корневом домене. На Black Hat 2023 представили как on-path, так и off-path способы атаки. Последние сложнее реализовать, но они и будут более полезны для злоумышленников.

 

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

 

В случае BIND9 оба параметра можно получить с помощью брутфорса: потребуются 3600 циклов запросов. У Microsoft DNS это число ещё меньше — 720 циклов. Исследователи поделились видеодемонстрацией атаки:

Вышла утилита RKN Block Checker для диагностики блокировок

Разработчик Дмитрий Виноградов представил утилиту RKN Block Checker с открытым исходным кодом. Она помогает понять, почему конкретный сайт не открывается: это обычная сетевая проблема или блокировка на стороне провайдера / регуляторной инфраструктуры.

Проект написан на Python и опубликован под лицензией MIT. Утилита работает из командной строки и проверяет соединение по цепочке DNS → TCP → TLS → HTTP.

Идея простая: не просто выдать вердикт, что сайт недоступен, а показать, на каком именно уровне всё сломалось. Например, если системный DNS не даёт нормальный ответ, а Cloudflare DoH возвращает корректный адрес, это может указывать на DNS-подмену. Если TCP-соединение на 443-й порт сбрасывается, речь может идти о блокировке на уровне IP.

Если TCP проходит, но соединение рвётся на TLS-рукопожатии с SNI, это уже похоже на работу DPI / ТСПУ. А если сайт открывается, но вместо страницы приходит заглушка провайдера или код 451, утилита фиксирует и такой сценарий.

 

Автор отдельно подчёркивает, что смысл RKN Block Checker не в том, чтобы заменить браузер. Браузер и так сообщает, что сайт не открылся. Здесь задача другая — разложить проблему по слоям и дать пользователю более понятную картину, где именно произошёл сбой и на что это похоже.

Утилита сравнивает ответы системного DNS и DNS over HTTPS через Cloudflare, проверяет обычное TCP-подключение, запускает TLS-handshake с SNI целевого домена и затем делает HTTP-запрос. Вердикт выставляется по первому уровню, на котором возникла ошибка.

 

У проекта есть и ограничения. Пока поддерживается только IPv4. Списки целей жёстко заданы в коде и включают около 20 сайтов на категорию, поэтому инструмент не поймает все частные случаи. Кроме того, это разовая проверка без повторов и долгосрочного мониторинга, хотя JSON-вывод можно использовать в cron для регулярных запусков.

RSS: Новости на портале Anti-Malware.ru