Втр, 2010-09-21 20:08

Активная XSS на twitter

Новая брешь в системе безопасности Twitter сегодня была применена на тысячах аккаунтов, переправляя пользователей на вебсайты без их согласия. Сама уязвимость довольно неприятна, потому что работает при вызове события Mouseover, что позволяет открывать вебсайты и всплывающие окна только тогда, когда пользователь проводит мышкой по ссылке.
Описание и скриншот под катом

Уязвимость использует js-функцию onMouseOver, которая генерирует событие, когда указатель мыши наводится на блок. Применительно к твиттеру уязвимость открывала простые pop-up окна, перекидывала пользователей на разного рода ресурсы (включая порноресурсы), а также творила иные безобразия.
Лучшие способ защиты от подобного «нападения» — использовать специальные приложения для доступа к сети Twitter: TweetDeck, Twitter for iPhone и другие, потому что уязвимость прежде всего применима на веб-интерфейсе.
Разработчики твиттера долгое время не комментировали эту оплошность, но совсем недавно стало известно, что уязвимость закрыта: «This should now be fully patched and is no longer exploitable».
Пример сработавшего скрипта приведен на скриншоте ниже:
Началось всё отсюда (банальное раскрашивание через css) twitter.com/RainbowTwtr, автор не известен.
Достаточно отпостить твитт вида
twitter.com/mr_the#@"onmouseover="jAvascript:alert('Ha-ha! XSS!');"/
и будет много-много радости.
Собственно причина — плохой парсер ссылок, без должной фильтрации.
В целях безопасности, рекомендую временно отключить выполнение Javascript на twitter.com.
UPD: В NewTwitter xss не работает.
UPD2: На 15:52 (по Киеву) закрыли возможность отправлять подобные твитты. Старые всё ещё работают.
UPD3: 16:46 по Киеву, уязвимость официально закрыли — status.twitter.com/post/1161435117/xss-attack-identified-and-patched

Пт, 2010-05-07 20:03

Автоматическая трансляция Twitter в ВКонтакте

CrossPosing twitter to вК
Мощ твитера ежесекунда увеличивается. Это Твиттер и ВКонтакте пока не спешат сделать возможность передачи твитов в статус или наоборот, а хочется уже сейчас — сегодня одна моя хорошая знакомая спросила, а можно ли сделать первый вариант? И сделать его все же удалось. ВКонтакте есть приложение, выполняющее подобную функцию, однако, из-за ограничений OpenAPI, но не может работать без участия пользователя (т.е. работает, только если его вручную открыть в браузере). Данное решение же полностью автоматическое.
Если с API Твиттера все достаточно просто, то у контакта с внешним взаимодействием, несмотря на такие вещи как недавно анонсированное OpenAPI, все еще проблемы.
Как оказалось, сессия при авторизации выдается всего на час, что для задачи явно не подходит. В итоге решено было пойти путем эмуляции и сделать логин и авторизацию через cookies.
Ниже опубликован готовый скрипт с комментариями, данную задачу выполняющий. Стартап из него, к сожалению, сделать не получится (из-за ограничений как твиттера, так и контакта), а вот сделать трансляцию для нескольких человек — запросто.
В скрипт достаточно прописать логины и пароли для обоих сервисов, а затем поставить его в крон, например, на каждые 10 минут.