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, который запрашивается, различаются.
А разве на клиенте IP после резолвинга не кешируется?
Мне казалось что round robin dns в данном случае должен таки одного клиента привязать к одному IP, по крайней мере на некоторое время.
Хотя, конечно можно ttl выставить минимальный...
Да, нужно поисследовать.
Комментарий для alpha.fm:
Именно так и делается.
Добрые люди уже поисследовали :) См. rebind ( http://code.google.com/p/rebind/ )
Пару дней назад в ЛасВегасе уже показали куда это можеть привести:
http://www.securityweek.com/hacker-uses-xss-and-google-streetview-data-determine-physical-location
Видео обезательно посмотрите.
опера тоже при редиректе на локальные сайты спрашивает подтверждение, хотя не знаю, как поведёт себя в такой ситуации
Комментарий для arty.name:
Сделает всё молча.