Независимый специалист Рэнди Вестергрен (Randy Westergren) обнаружил, что многие рекламные сети подвержены одной и той же проблеме: они позволяют атакующему осуществить XSS-атаку через рекламный код на легитимном сайте.
В последние годы недоверие к рекламе в сети растет, и не только потому что баннеры всем надоели, но и потому что случаи заражения различных ресурсов вредоносной рекламой стали совсем не редкостью. Вестергрен, в свою очередь, обнаружил проблему, которая обещает дополнительно усугубить ситуацию.
Корень проблемы заключается в том, что рекламщики очень любят шпионить за пользователями и собрать всевозможные данные об их поведении в онлайне. В частности, информация о том, какие страницы посещает пользователь, записывается и сохраняется в рекламном коде, чтобы затем из этих данных можно было составить полноценную историю браузинга. Вестергрен заметил, что при этом многие рекламные сети сохраняют URL полностью, включая хеш. Это исследователю не понравилось, и он провел опыт – добавил простенький XSS-пейлоуд к URL и прошелся по нескольким популярным сайтам.
http://nypost.com/#1'-alert(1)-'"-alert(1)-"
Пейлоуд из хеша выше не отправляется на сервер nypost.com, зато клиентская сторона рекламного провайдера его подхватывает. Хуже того, так как URL сохраняется и обрабатывается полностью, всё, что идет после символа «#», не отбрасывается в сторону (как это бывает обычно), а тоже уходит в работу.
К Вестергрену его собственный XSS-пейлоуд вернулся через рекламную сеть AppNexus. Детально изучив путь пейлоуда, исследователь понял, что произвольный JavaScript код мог был выполнен таким образом дважды!
Проблема не является эксклюзивной для AppNexus или nypost.com, аналогичные уязвимости обнаружились на cbsnews.com, nbcnews.com, newyorktimes.com, msn.com, washingtonpost.com, bbc.com и других популярных ресурсах, отображающих рекламу.
Вестергрен пишет, что такая атака может казаться неопасной для сайтов медиа или блогов, но на других ресурсах могут возникнуть проблемы посерьезнее. К примеру, на сайте Walmart атаку вполне можно использовать для взлома сессии и последующего перехвата управления над аккаунтом пользователя.
Фактически, атакующие могут распространить ссылку, ведущую на абсолютно легитимный сайт, но к концу этого URL будет приписан XSS-пейлоуд. Когда жертва перейдет по такой ссылке и откроет сайт, ничего страшного не случится, пользователь не заметит подвоха. Но как только жертва перейдет на какую-либо другую страницу, реклама обработает вредоносный код злоумышленника, и XSS сработает.
Исследователь пишет, что он не сумел уведомить все рекламные сети о найденной проблеме: данный рынок сильно фрагментирован, протестировать все сервисы и связаться со всеми компаниями попросту невозможно. Вестергрен также написал аддон для Chrome, который проверяет пейлоуды в хеше и (опционально) собирает данные для будущих возможных исследований, если данным вопросом заинтересуются другие специалисты или рекламные сети.
Что до простых пользователей, по мнению Вестергрена, найденная им проблема – лишний повод задуматься об установке блокировщика рекламы.