DNS rebinding

Меня восторгает атака «DNS rebinding», вострогает своей простотой. Суть такова. Как известно, у страницы в браузере есть стотыщьмильёнов способов получить содержимое произвольного URL, но с одним условием — получить данные можно только с того же хоста, на том же порту и по тому же протоколу.

Хакер заманивает жертву на свой сайт — example.org, DNS этого сайта настроен так, что выдаёт то настоящий IP этого сайта, то 192.168.0.1. Страница обращается по URL на своём хосте, браузер проверяет — протокол, доменное имя, порт совпадает, разрещает запрос, но запрос попадает не на внешний сайт, а на адрес 192.168.0.1. В домашних сетях там, чаще всего, находится интерфейс роутера.

Дальше уже зависит от фантазии взломщника.

Защищиться от атаки очевидным способом (запретив запрос, если сменился IP) нельзя — есть масса сайтов (например, «Яндекс») снижающих нагрузку, распределяя пользователей по нескольким IP-адресам.

У IE есть такое понятие как «зоны безопасности», там локальные сайты выделены в отдельную зону. Мне кажется хорошим методом запрещать доступ по XHR/Flash/Java, если зоны у страницы, которая запрашивает и у URL, который запрашивается, различаются.

Комментарии 5

alpha.fm № 1
А разве на клиенте IP после резолвинга не кешируется?
Мне казалось что round robin dns в данном случае должен таки одного клиента привязать к одному IP, по крайней мере на некоторое время.
Хотя, конечно можно ttl выставить минимальный…

Да, нужно поисследовать.
Евгений Степанищев (bolknote.ru) автор № 2
Хотя, конечно можно ttl выставить минимальный…

Именно так и делается.

Да, нужно поисследовать.

Добрые люди уже поисследовали :) См. rebind ( http://code.google.com/p/rebind/ )

Artemy Tregubenko (arty.name) № 4
опера тоже при редиректе на локальные сайты спрашивает подтверждение, хотя не знаю, как поведёт себя в такой ситуации
Евгений Степанищев (bolknote.ru) автор № 5
опера тоже при редиректе на локальные сайты спрашивает подтверждение, хотя не знаю, как поведёт себя в такой ситуации

Сделает всё молча.