First IE7 vulnerability

Oct 19, 2006 15:41

Сегодня вышел IE7. Сегодня в IE7 нашли дырку. XmlHttpRequest, получив редирект на URL с таинственной схемой "mhtml", ничтоже сумняшеся отправляет данные на произвольный сервер в Интернете.

security, ie7, microsoft, fun

Leave a comment

gornal October 19 2006, 20:14:46 UTC
А в чем дырка? В ссылку кликать лень, а по твоему описанию непонятно :-)

Reply

quappa October 19 2006, 20:19:08 UTC
XmlHttpRequest должен работать только в пределах хоста.

Reply

gornal October 19 2006, 20:28:37 UTC
И как можно зловредно использовать нарушение этого правила?

Reply

chieftain October 19 2006, 21:52:24 UTC

The vulnerability is caused due to an error in the handling of redirections for URLs with the "mhtml:" URI handler. This can be exploited to access documents served from another web site.

Reply

fantaseour October 20 2006, 04:21:59 UTC
correct me if I'm worng, мне кажется, что использовать можно так. Вы залогинились на своем супер-любимом сайте, где либо пишете блог, либо являетесь администратором. Этот сайт использует модные ajax фичи и в частности позволяет делать запросы типа обновить или удалить через XmlHTTPRequest.

Дальше неразлогинившись Вы идете на сайт к зоумышленнику. Пусть он каким-то образом знает, что Вы к нему придете. На этом сайте тоже используется ajax. Вот только в ответ на запрос к серверу он выдает вот такой вот редирект на ваш сервер с командой на удалить или обновить. Поскольку этот редирект выполняет Ваш браузер, при этом в Вашей системе Вы авторизованы, то запрос выполняется.

В общем примерно так. Это вариация на тему XSS (Cross Site Scripting+CDRF(Cross Domain Request Forgery).

Reply

gornal October 20 2006, 05:03:20 UTC
Всё, описанное Вами, можно сделать без использования этой дырки и XmlHTTPRequest вообще - в невидимом фрейме создать форму и сабмитнуть её можно на любой домен. Именно поэтому для критических вещей сайты обычно требуют ввод пароля непосредственно в форме.

Reply

fantaseour October 20 2006, 05:09:45 UTC
В общем да -- т.е. это лишь еще один удобный способ пролезть в эту дырку, если она есть.

Reply

quappa October 20 2006, 08:10:28 UTC
Важно понимать, что XmlHttpRequest позволяет сделать POST и получить его результаты. С формой во фрейме не прокатит.

Reply

chieftain October 19 2006, 21:58:43 UTC
кстати, почему до сих пор trusted-правила не ввели? приходится с проксями гемороиться, а решение на поверхности - куда можно, куда нет. типа на той стороне (к которой делаем request) - решаем, доверяем или нет? будет все честно - если я доверяю ко мне ходит такому-то, почему бы и нет? robots.txt ведь есть - вот на этом же уровне.
From: *.rambler.ru
Allow: /
From: *.yandex.ru
Disallow: /porno/

таким образом рулю я, кто ко мне приходит, а кто отваливается с permission denied или как-то еще. на стороне клиента можно (и нужно) проверять код возврата, а стороне сервера рулить.

Reply

quappa October 19 2006, 22:55:35 UTC
Адрес чего пишется в строке From:? :)

Reply

chieftain October 20 2006, 00:01:23 UTC
Это все понятно - только это проблемы другого порядка. Если ты ко мне придешь как quappa.rambler.ru, а back-резолвиться будешь как quappa.yandex.ru - получишь отлуп (в крайнем случае, ляжешь в морозилку), что логично. И попробуй это подмени.
А дергать чей-то внешний XML через обычный GET на локальной проксе, чтобы реально его получить - выглядит по меньшей мере издевательски. Я в любом случае до твоих _публичных_ данных доберусь, так или иначе =) А о скрытых речь не идет.

Reply

quappa October 20 2006, 08:14:28 UTC
XmlHttpRequest-ом можно запрашивать обычные HTML-странички. Их ты как защитишь? Ну то есть умолчание по доступу ты какое предлагаешь?

Сценарий: сидя в офисе Рамблера ты заходишь на злой сайт, который через твой браузер перекачивает к себе наш интранет.

Reply


Leave a comment

Up