DNS rebinding

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

DNS rebinding (досл. с англ. — перепривязывание DNS) — форма компьютерной атаки на веб-сервисы. В данной атаке вредоносная веб-страница заставляет браузер посетителя запустить скрипт, обращающийся к другим сайтам и сервисам. Теоретически политики одинакового источника (Same Origin Policy) препятствуют подобным запускам: сценарии на стороне клиента могут получать доступ только к данным с того сайта, с которого был получен скрипт. При реализации политики производится сравнение доменных имен, а атака перепривязки обходит эту защиту, злоупотребляя возможностями системы доменных имен интернета (DNS) по быстрой смене адресов.

Атака может быть использована для проникновения в локальные сети, когда атакующий заставляет веб-браузер жертвы обращаться к устройствам по частным (приватным) IP-адресам и возвращать результаты этих обращений атакующему. Также атака может использоваться для того, чтобы поражаемый браузер выполнял отправку спама на веб-сайты, и для DDOS-атак и других вредоносных деяний.

Схема работы[править | править код]

Злоумышленник регистрирует домен (например, attacker.com) и устанавливает контроль над DNS-сервером, обслуживающим домен. DNS-сервер настраивается так, чтобы его ответы содержали очень короткое время жизни (TTL) записей, предотвращая кэширование ответа клиентом или резолвером. Когда жертва начинает переход на вредоносный домен, DNS-сервер атакующего сначала возвращает настоящий IP-адрес веб-сервера, который предоставит вредоносный код клиенту. Например, жертва может перейти на сайт, который содержит вредоносный код JavaScript или активный Flash-объект.

Затем вредоносный код на стороне клиента совершает дополнительные обращения к исходному имени домена (attacker.com). Политика одинакового источника (Same Origin Policy) разрешает такие запросы. Однако, во время исполнения скрипта в браузере жертвы из-за устаревания предыдущего DNS-ответа производится новый запрос DNS для данного домена и запрос поступает к dns-серверу атакующего (из-за устаревания данных в кеше). На этот раз злоумышленник отвечает, что теперь домен attacker.com как будто бы находится на некоем новом IP-адресе, например, на внутреннем IP-адресе или IP-адресе какого-то иного веб-сайта. Запрос скрипта попадает к другому серверу. Для возврата собранной скриптом информации атакующий может вновь предоставить свой настоящий IP-адрес в одном из последующих DNS-запросов.

Противодействие и защита[править | править код]

Разработан ряд методов противодействия атакам перепривязки DNS:

  • Веб-браузеры могут реализовывать привязку ДНС (DNS pinning): используемый для работы с сайтом IP-адрес фиксируется на то значение, которое было получено в первом ответе DNS. Этот метод предотвращает все типы атаки, но может препятствовать некоторым правомерным использованиям динамических DNS. При использовании этого метода пользователь может ошибочно использовать старый IP-адреса сайта при его легитимной смене.
  • IP-адреса, относящиеся к локальным сетям могут быть отфильтрованы из ответов DNS (сложнее реализуется для некоторых вариантов с шифрованием запросов, напр. DNS over TLS, DNS over HTTPS).
    • Некоторые общедоступные DNS-серверы поставляют данную услугу наряду с другими функциями, например, корпорация OpenDNS.[1]
    • Системные администраторы могут настроить внутренние рекурсивные DNS-серверы для блокирования разрешения внешних имен во внутренние для локальной сети IP-адреса. Недостатком подобной блокировки может стать утечка информации о списке заблокированных локальных подсетей к злоумышленнику.
    • DNS фильтрация, встроенная в брандмауэр, маршрутизатор или локальный демон разрешения имен, например dnswall.[2]
  • Веб-серверы и веб-сервисы должны отказывать в обслуживании HTTP запросам, указывающим неверное имя сайта в служебном заголовке HTTP «Host».
  • Расширение браузера Firefox NoScript обеспечивает частичную защиту (для стандартных диапазонов частных сетей), используя функцию ABE. Она блокирует интернет-трафик с внешних адресов на локальные адреса.

См. также[править | править код]

Примечания[править | править код]

  1. Ulevitch, David Finally, a real solution to DNS rebinding attacks. Cisco (14 апреля 2008). Дата обращения: 15 июля 2017.
  2. dnswall на GitHub.

Литература[править | править код]

Ссылки[править | править код]