Отравление кэша DNS (DNS Cache Poisoning)Классические атаки на кэш DNS не исчезли после 2008 года. После доклада Дэна Каминского и координированного выпуска патчей по CVE-2008-1447 (a.k.a Kaminsky bug) отраслевые вендоры усилили энтропию при генерации запросов на резолв (случайность ID транзакции – TXID и портов-источников), однако сама поверхность атаки не была нейтрализована. Это подтвердили три источника:
- исследования SAD DNS, которые снова сделали практичными удалённые атаки на отравление кэша без перехвата трафика за счёт побочных каналов в сетевом стеке;
- атака MaginotDNS, показавшая опасность комбинированных ролей forwarder/recursive (CDNS);
- достаточно свежий репорт NLnet Labs Unbound CVE-2025-11411 о захвате домена (domain hijack) через некорректную обработку authority section.
Подводя итог, можно сказать, что патчи, применяемые для закрытия класса атак, обозначенных в CVE-2008-1447, не помогают полностью обезопасить себя, а лишь сводят происходящее к тому, что атаки стали зависеть от качества реализации, конфигурации и сетевой среды.
Исторически подобные атаки основывались на слабой защите DNS-транзакций. Основными факторами риска были короткий 16-битный идентификатор запроса (TXID), фиксированный либо недостаточно случайный исходный UDP-порт, слабая проверка записей в секциях authority и additional, а также возможность вынуждать DNS-сервер многократно выполнять запросы к случайным поддоменам, отсутствующим в кэше. Именно этот класс уязвимостей описывался в известных публикациях и исследовании Дэна Каминского. Позднее RFC 5452 зафиксировал основные рекомендации по повышению устойчивости DNS к поддельным ответам.
После 2008 года базовыми защитными мерами стали случайный выбор исходного порта, более строгая проверка DNS-ответов, техника случайного изменения регистра символов в имени запроса (0x20 case randomization), а позднее – механизм DNS Cookies. Однако современные исследования показали, что атаки без прямого доступа к трафику по-прежнему возможны. Они могут использовать побочные каналы операционной системы (SAD DNS), ошибки в логике взаимодействия между DNS-форвардером и резолвером, а также некорректную обработку записей authority, как это отмечалось в примечании по CVE-2025-11411. Для атаки на кэш обычно нужны как минимум четыре условия: резолвер выполняет рекурсию/форвардинг для жертвы; атакующий может заставить его делать cache miss; есть слабость/ослабление энтропии или логики проверки ответа; TTL отравленного RR достаточно велик, чтобы влияние было заметным.
Механизм атакиЗадача атакующего – воспользоваться коротким временным интервалом между отправкой запроса резолвером и получением легитимного ответа. В этот момент злоумышленник пытается направить на внутренний DNS-сервер поддельный DNS-ответ, который будет выглядеть как сообщение от авторитетного сервера. Если резолвер примет такой ответ как корректный, ложная запись будет помещена в DNS-кэш и начнет использоваться при последующих запросах клиентов. Основная цель – угадать параметры активного DNS-запроса, прежде всего идентификатор транзакции (TXID), а в ряде случаев также исходный порт запроса. Для повышения вероятности успеха злоумышленник массово перебирает возможные значения, отправляя поток ложных ответов с различными идентификаторами.
DNS rebindingRebinding-атака использует короткий TTL и повторный резолв того же доменного имени, чтобы привязать уже загруженный из браузера origin сначала к внешнему серверу злоумышленника, а затем к внутреннему адресу – 10.10.10.120, 127.0.0.1, 0.0.0.0 – эквиваленту на некоторых платформах или веб-интерфейсу маршрутизатора. Ключевая причина в том, что модель browser same-origin policy проверяет origin как комбинацию scheme + host + port, при этом IP-адрес не входит в проверку. Поэтому после смены A-запис JavaScript, загруженный с http://rebind.test:8080, все еще считается тем же origin, даже если фактический IP уже сменился на внутренний.
Современные браузеры ответили на это механизмами PNA и CORS. Google Chrome еще с ранних фаз PNA ограничил доступ к приватным сетям из небезопасного контекста. Локальный IP-адрес считается более конфиденциальным, чем частный IP-адрес. Частный IP-адрес, в свою очередь, считается более конфиденциальным, чем публичный IP-адрес.. Однако исследователи и практики показывают важную деталь: rebinding не умер, он просто стал зависеть от деталей реализации браузера, сетевого стека, адресного пространства и того, как ведет себя целевой сервис.
CORS (Cross-Origin Resource Sharing) – браузерный механизм безопасности, который регулирует доступ веб-страниц к ресурсам с другого origin. Он позволяет серверу явно указать, какие внешние сайты могут выполнять кросс-доменные запросы и какие методы или заголовки для этого разрешены.
PNA (Private Network Access) – расширение браузерной модели безопасности, предназначенное для защиты внутренних и локальных сетей пользователя. Технология ограничивает обращения сайтов из публичного интернета к ресурсам в частных сетях и требует явного разрешения со стороны целевого сервиса.