Новая атака SAD DNS снова открыла фундаментальную уязвимость DNS-серверов

Герард Дау. Ученый, затачивающий перо. 1633
Герард Дау. Ученый, затачивающий перо. 1633

Новый вид атаки (CVE-2020-25705), которому подвержены большинство крупнейших DNS-серверов, разработан коллективом исследователей университета Цинхуа и Калифорнийского университета. Об этом 13 ноября сообщил сайт saddns.net.

Атака SAD DNS развивает атаку на фундаментальную уязвимость DNS кэша 2008 года. Атака позволяет произвести подмену IP-адреса у домена на атакуемом DNS-сервере, который станет указывать на адрес злоумышленника.

Как утверждают авторы статьи, треть всех открытых резолверов подвержены атаке, включая Google (8.8.8.8), Quad9 (9.9.9.9) и CloudFlare (1.1.1.1).

Первоначальная уязвимость заключалась в малом размере идентификатора DNS-запроса, всего 16 бит, что позволяло фальсифицировать ответ DNS-сервера, отправив около 7000 запросов и симулировать примерно 140 тысяч фиктивных ответов. Уязвимость устранили, добавив к определению корректности ответа, кроме номера сообщения, еще номер исходного порта UDP. Такое решение позволило увеличить сложность атаки до 2 в 32 степени. Однако исследователи обнаружили быстрый способ выявления открытых портов UDP.

Атака SAD DNS использует особенность всех популярных семейств операционных систем, фиксирующих лимит в 1000 ICMP-ответов в минуту. Таким образом, если злоумышленник отправит сообщения на 1000 портов и 1001 будет заблокировано, то среди этой тысячи были открытые порты. Далее методом половинного деления можно определить нужные порты. Данное решение позволяет сократить число переборов до 216 + 216 и делает фундаментальную уязвимость DNS-серверов снова доступной для злоумышленников.

Заплатка, позволяющая добавить случайный элемент в ограничитель ICMP-ответов уже выпущен для ядра Linux.