Для автора публикации «медийный отпечаток» выглядит следующим образом и является абсолютно верным:
И это весьма неприятно.
В чем суть
Для начала автор заметки объясняет, как происходит процедура перенаправления на окно авторизации.
Если мы перейдем по ссылке
https://www.facebook.com/bookmarks/pages
в инкогнито-режиме, то нас автоматически перенаправит на экран авторизации по адресу:https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Fbookmarks%2Fpages
Обратите внимание на вторую часть ссылки вида:
https%3A%2F%2Fwww.facebook.com%2Fbookmarks%2Fpages
.Это URL, на который нас вернет после того, как мы пройдем процедуру авторизации на Facebook. Но если мы используем этот URL для перенаправления на страницу авторизации, когда мы уже авторизированы на сайте, то мы сразу попадем на bookmarks/pages.
Еще раз:
- Если мы не залогинены и переходим по
https%3A%2F%2Fwww.facebook.com%2Fbookmarks%2Fpages
, то мы попадаем на окно авторизации. - Если мы залогинены, то мы по этому же линку попадем сразу на
https://www.facebook.com/bookmarks/pages
.
Вроде, все логично.
Политика крупных ресурсов, таких как Facebook, не позволяет получать данные самого запроса, т.к. соединение происходит по HTTPS. Однако, мы можем получить любое изображение с домена, если указать ссылку на него в
login.php?next=
. Конечно, фотки из FB так вытянуть не получится, потому что почти все изображения социальная сеть хранит по адресу fbcdn.net, однако, можно «постучаться» на лого Facebook — favicon.ico:https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Ffavicon.ico
А на самом сайте замаскировать это через img-тэг как
<img src="https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Ffavicon.ico">
. Выглядит это вот так:
Если выше вы увидели вот такой значок FB (), поздравляю, мы только что убедились, что вы залогинены в Facebook (проверьте). Если вы ничего не увидели или изображение не прогрузилось, вернув соответствующий значок(), то, соответственно, в Facebook вы не залогинены.
Финальная эксплуатация данной уязвимости выглядит следующим образом:
<img onload="alert('logged in to fb')" onerror="alert('not logged in to fb')" src="https://www.facebook.com/login.php?next=https%3A%2F%2Fwww.facebook.com%2Ffavicon.ico">
С помощью этих нехитрых манипуляций с иконками можно собирать информацию о том, какими сервисами пользуется аудитория сайта без её ведома. Данный механизм работает почти для всех основных веб-сервисов, так как все они хранят свои иконки на основном домене.
Эту уязвимость можно использовать как один из этапов других типов атак, таких как ClickJacking или ProfileJacking.
Реакция сервисов
Проблема получения доступа к информации о том, какими иными сервисами пользуется человек, известна давно, но большинством компаний игнорируется. Вот какие ответы получил на свои багрепорты Робин от ряда крупнейших сервисов и социальных платформ.
Facebook:
Спасибо за ваше обращение. Этот вопрос обсуждался с группой, отвечающей за безопасность в Facebook и данная ошибка не может участвовать в bug bounty-программе. Она не применима к конкретному пользователю Facebook. Возможность узнать, где авторизован пользователь, вошедший на сайт, не представляет какой-либо угрозы безопасности. В любом случае, мы оценили ваш репорт и с нетерпением ждем от вас других сообщений об ошибках.
Twitter:
Спасибо за ваш репорт.
Конечно, это выглядит интересно, но я не вижу, как эта проблема может представлять угрозу для безопасности Twitter и его пользователей. Так что, боюсь, что данный вопрос можно считать закрытым и претендовать на участие в bug bounty-программе он не может.
Благодарим Вас за тревогу о безопасности Twitter.
Yahoo:
Благодарим Вас за обращение. Это известная проблема, о которой уже упоминал Емерия Гроссман. Мы подумаем, как в будущем решить ее.
Square:
Благодарим за обращение. Мы пришли к выводу, что этот вопрос представляет минимальный риск и поэтому никаких изменений в код для его решения вноситься не будет.
Dropbox:
Спасибо! Мы учтем эту угрозу.
Собственно, позиция большинства сервисов ясна — если уязвимость не приводит к краже персональных данных/данных учетной записи/не дает доступа к какой-либо категории данных, то это и не уязвимость.
Комментарии (96)
napa3um
13.10.2016 22:18В Гугл+ опознаюсь как незалогиненный, хотя на самом деле залогинен (проверил несколько раз). Возможно, починили уязвимость. P.S.: На https://bo0om.ru/zn2014/sd/ определяется залогиненность и на Г+.
Alukardd
13.10.2016 23:43У меня ни чего не детектится ни по вашей ссылке, ни по ссылке в начале статьи.
steff
13.10.2016 22:21+3В Опере спасает настройка блокировки куков сторонних сайтов: https://imgd.ru/image/uchm, а при её отключении «всё становится явным».
Как в других браузерах, проверял кто?tubecleaner
13.10.2016 23:21+1Да, у меня также всегда включена эта опция в Хроме и также не определила подключение к сайтам. Все сайты, среди посещаемых мной, которые используют внешнюю аутентификацию, нормально работают с этой опцией.
ingumsky
14.10.2016 19:25Спасибо за подсказку. Интересно, а как может включение этой опции отразиться на работе с сайтами и UX, в целом? Ну, кроме того, что таргетированной рекламы, по идее, должно стать меньше (что лично я считаю плюсом).
steff
14.10.2016 22:54+1Особо не разбирался, но, если не ошибаюсь, при включенной опции у меня не работает вебвизор Яндекса. Он как бы зацикливается при открытии страницы с картой кликов, ссылок и т.д.
ingumsky
14.10.2016 23:12Спасибо. То есть всё-таки в некоторых случаях функциональность страдает. Буду иметь в виду.
msts2017
13.10.2016 22:21+3Demonstration
You are logged in to:
No platform
(or you're using something like Privacy Badger)xaja
13.10.2016 22:57+1adblock
ragequit
14.10.2016 00:38+3Адблок адблоку рознь. Тут скорее дело в фильтрах, потому что у меня при включении «коробочного» adblock все работало. Собственно, с ним и сделан скриншот на КДПВ.
DenVdmj
14.10.2016 15:49Или фильтры в Опере:
https://cdn.rawgit.com/uBlockOrigin/uAssets/master/thirdparties/easylist-downloads.adblockplus.org/easylist.txt
https://cdn.rawgit.com/uBlockOrigin/uAssets/master/thirdparties/easylist-downloads.adblockplus.org/easyprivacy.txt
https://easylist-downloads.adblockplus.org/fanboy-annoyance.txt
Myrddin
14.10.2016 05:36+2Privacy Badger — хорошее расширение, рекомендую
Seekeer
14.10.2016 09:23Лучше Ghostery?
dvor
14.10.2016 16:11Согласно FAQ, можно использовать оба, они не конфликтуют:
Privacy Badger is compatible with most extensions. Whether it makes sense to run it with another adblocker varies. If you have customized your adblocker settings to block trackers as well, Privacy Badger may be partially redundant (though it may offer advantages like cookie blocking that other tracker blockers do not). However if you run extensions like Adblock Plus or Ghostery in their default configurations, Privacy Badger can significantly increase your privacy online. (Adblock does not block invisible trackers by default, Ghostery does not block anything by default.)
format1981
13.10.2016 22:21+10Можно сделать умные соц. кнопки — показывать только те сервисы, в которых авторизован. Ничего лишнего.
zelenin
13.10.2016 23:00+5соц. кнопки сделаны не для того, чтобы постить в той соцсети, в которой залогинен, а чтобы постить в той соцсети, в которой ты можешь залогиниться)
TimsTims
13.10.2016 22:47+5Надеюсь, нормальные вебмастеры используют этот трюк, чтобы показывать кнопку «ПОДЕЛИТЬСЯ» и выводить только те соцсети, где ты есть. А не выводить 1000 иконок всех соцсетей мира, на которые даже смотреть не хочется.
Skreep
14.10.2016 12:09+1Или, как вариант, выводить «авторизованные» соцсети в первую очередь, скрывая остальные «под кат».
То же самое можно делать для кнопок «войти через...». По идее, должно повысить конверсию.
Methos
13.10.2016 23:15-10Пустота. Этот сайт ничего обо мне не знает, как и все остальные, которым я не доверяю и не включаю js
Methos
13.10.2016 23:17+1Но даже когда я включил js, то тоже ничего не узнал, ибо я пользуюсь Chostery и adblock
plus79501445397
14.10.2016 08:09И Вам не стыдно быть «велосипедистом»?
К тому же это тянет на гнусное предательство Вашей профессии!
Ирония конечно )
Tufed
14.10.2016 14:40да, Ghostery в этом отношении рулит. Как раз ловит то что отслеживает (яндекс-метрики всякие, гугл аналитику и кнопки соц.сетей) и блокирует как отображение так и активность этих скриптов (зачастую излишнюю). Приятно когда гугл не начинает рекламировать памперсы после посещения двух десятков сайтов с памперсами (да купил я уже, не надо мне уже, все хватит, горшочек не вари — но алгоритм всё-же туповат и продолжает).
LynXzp
14.10.2016 23:17Стоят nojs, ghostery и ublock origin. Когда влючил вскрипты эта страница обнаружила что я залогинен на github, но потом перепроверил увидев эти комментарии — уже не обнаруживает. Странно.
Страница https://bo0om.ru/zn2014/sd/ аналогично обнаружила только при первом входе.
Беда-печаль.LynXzp
14.10.2016 23:29Прошу прощения, сам виноват. Отключил сторонние cookies по совету выше. (значит помогает)
ZoomLS
13.10.2016 23:32+1RequestPolicy и подобные плагины, обрезают всю эту слежку на корню.
А вообще, ждём контекстные контейнеры в Firefox. Если их использовать с умом, тогда такое вычисление будет невозможно в принципе.
PTM
01.02.2017 17:48+1блин… рядом лежит светильник со встроенным драйветом.
нажал кнопку — включился, нажал и держишь- яркость растет до 100%
нажал и держишь- убывает до 10%
коротко нажал-выкл.( с запоминанием последнего состояния)
о чем это я??
Ах да… и зачем хаб дополнительные примочки, пересобирать люстру достаточно одной кнопки/выключателя и 2-х проводов.AndreyRubankov
14.10.2016 00:14Попробуйте включить опцию DNT (Do Not Track), Честные сервисы аналитики учитывают ее, а так же можно включить блокирование сторонних кукисов. Как результат — меньше мусора в истории и гугловая реклама не предлагает ничего из того, что ты посещал или гуглил. Для этого нету необходимости ставить сторонние плагины.
Oxoron
14.10.2016 10:30+9Я на этом чуть не спалился, когда жене обручальное кольцо выбирал. Никакой секретности.
Pongo
16.10.2016 15:45У яндекса учет интересов при показе рекламы можно отключить https://yandex.ru/tune/adv/
esudnik
18.10.2016 09:49+1По поводу Гугла: Я уже как несколько лет пользуюсь следующем методом:
Добавляю следующую строчку в /etc/hosts
127.0.0.1 tpc.googlesyndication.com googleads.g.doubleclick.net doubleclick.net googleadservices.com www.googleadservices.com pagead2.googlesyndication.com www.google-analytics.com google-analytics.com
… после этого Адвордс реклама а также разные трекинг миханизмы перестают работать.
shifttstas
01.02.2017 17:55+1И еще, у них есть интересная железка — nooLite SB111-150
Она позволяет оставить свой старый выключатель подключив его только одним проводом
Заголовок спойлера— 2-х проводное подключение без “Нуля”, что позволяет
устанавливать данный блок под обычный выключатель.
— Коммутируемая мощность 0–150 Вт;
— Участие в 32 световых сценариях/привязке до 32 передатчиков;
— Возможность выбора типа управляющего устройства(кнопка или выключатель).
— Работа с любым типом нагрузки (люминесцентные, светодиодные, газоразрядные лампы и пр.);
возможность дистанционной привязки пультов.
— Выбор режима работы(реле или диммер).
sumanai
14.10.2016 11:04+2все как ни крути делается не для удобства а на оборот, что бы больше контролировать народ
А по моему как раз для удобства народ выкладывает всю информацию о себе в соцсети, дают знать о своём местоположении очередному голосовому помощнику, и т.д.Svet6os6laV6
14.10.2016 17:35Тут на самом деле смотря с какой стороны посмотреть, главное оставаться в нейтралитете… Да бы не было войны ахахах
izuware
13.10.2016 23:50+2Автор подобной страницы получит список сервисов с которым скрытно можно сделать… что? Я думаю то-же самое что и на странице «логин с помощью OpenID». Причем тут плюсом можно выяснить наиболее предпочтительную сеть.
kid_a
13.10.2016 23:50-8Показывает только логины в браузере?
Запущенные скайп, баттлнет и стим не видит.AlexanderG
14.10.2016 10:47+13И rm -rf / сделать удаленно не дает, бесполезный хак, плохо зделали, тупо.
PycmaM
01.02.2017 18:36+3При ремонте квартиры (1к кв.) перевел весь свет на систему NooLite, пользуемся чуть менее года, накопился фидбэк.
Что не понравилось:
1. Выключатели неудобные. Даже эти, которые «кнопочные». Ход кнопок очень маленький, там обычные микрики, как в мышке. Гораздо удобнее были бы привычные выключатели без фиксации кнопки.
2. Выключатели не всегда срабатывают с 1 раза. Индикатор загорается, но реакции не происходит, видимо не доходит сигнал до реле.
3. Двойные выключатели таковыми по сути не являются, панель одна и она разделена нарисованной вертикальной линией. Нажимать нужно в углы.
4. Долгое ожидание перед началом диммирования. Нужно держать несколько секунд, прежде чем будет виден результат. С обычным круглым диммером все на порядок быстрее.
5. Выключатель на стенке санузла «не добивает» до реле в санузле при закрытой двери. Стена — 60мм армированного ж/б, выключатель находится «за углом» от двери, т.е. на перпендикулярной стенке.
6. Постоянно отваливаются со стен. Не держатся ни на каких обоях. Подольше держаться на гладких поверхностях. В принципе, это даже не проблема самих выключателей, а просто раздражающее наблюдение. Когда окончательно определишься с местом размещения пультов — нет проблемы прикрутить их на небольшие дюбели.
Что понравилось:
1. Плавное включение/выключение при включенном режиме диммирования. Свет не бьет по глазам.
2. Два режима реле: обычное вкл/выкл и диммер. В режиме реле включен вытяжной вентилятор, в режиме диммирования — свет, который это поддерживает. Везде LED-лампы, но не все лампы диммируются.
3. Удобство монтажа, реально проще некуда.
4. Стоимость!!! Дешевле купить noolite, чем извращаться с поделками на arduino и прочим.
5. Надежность. Почти год, 7 реле, 5 разных пультов, датчик влажности — все работает без нареканий.
6. Наличие всяких плат/адаптеров для интеграции в другие системы.
Apathetic
14.10.2016 00:15Интересно, какая реакция ожидается от того же фейсбука, если возможность определения, авторизован посетитель на фейсбуке или нет, есть в JS SDK.
ProfBiss
14.10.2016 08:09-1Да никакой абсолютно. Т.к. если ты приложение не авторизовал то ничего не узнаешь…
Apathetic
14.10.2016 08:39Этот метод предназначен для того, чтобы определять, авторизовал пользователь приложение, или нет. Для использования авторизация не нужна. Почитайте по ссылке.
ProfBiss
14.10.2016 09:19-1Только вы не внимательно прочитали документацию… Метод предназначен предназначен для того, чтобы определять, авторизовал посетитель приложение, или нет. Для использования авторизация не нужна. И если посетитель приложение не авторизовал то невозможно получить данные о пользователе ФБ, а соответственно «никакой угрозы» конфиденциальности нет. ФБ ответит именно так на багрепорт…
Apathetic
14.10.2016 12:02+1Боюсь, скорее это вы неверно интерпретировали мой комментарий :)
Я говорю о том, что странно ожидать от фейсбука какой-то реакции, раз уж в самом фейсбучном SDK есть возможность без всяких авторизаций определить, залогинен посетитель в фейсбуке или нет, то есть сделать ровно то же самое, что описано в статье. О доступе к прочей информации о пользователе я не говорил.
bertmsk
14.10.2016 00:52+10Методу сто лет в обед. С добрым утром, как говорится. Как спалось последние четыре года?
http://www.tomanthony.co.uk/tools/detect-social-network-logins/ — на дату статьи посмотри
alvik48
14.10.2016 08:46+2По-моему, это действительно сложно считать уязвимостью. Но вот у некоторых сервисов присутствует возможность разлогинить юзера без его непосредственного участия, что грустно — вот эти ребята так делают (ОСТОРОЖНО! Вы можете быть разлогинены в некоторых сервисах после перехода по ссылке): http://superlogout.com. Правда, работает мало где — толи уже прикрыли дырки, толи никогда и не работало, но в gmail на текущий момент меня выкидывает.
vsb
14.10.2016 11:32Как от такой уязвимости защищаться? Проверять Referrer?
gearbox
14.10.2016 13:58+1Резать все обращения к социалкам (только на уровне расширения броузера). Разрешать только по белому списку социалка+сайт. Думаю во всяких гостери и адблоках должен быть похожий функционал, но вообще не проблема накидать самому на основе любого бойлерплейта (https://github.com/orbitbot/chrome-extensions-examples).
vsb
14.10.2016 14:30Я имел в виду — как сайту защищаться, чтобы его логины так не смотрели. Простой способ — убрать все картинки с основного домена (где куки сидят), но как-то это кажется кривовато.
gearbox
14.10.2016 15:13А, в этом смысле. Токены. То есть вместе с кукой (http only) должен передаваться токен (js only) — при ПРАВИЛЬНОЙ реализации это МОЖЕТ гарантировать что запрос сделан вашим кодом.
LynXzp
14.10.2016 23:27Да, это бесит. Я когда захожу в vk — хочу чтобы там все работало (скрипты от vk, кнопочки и финтиклюшки), а когда на habrahabr — видеть в списке загружаемых скриптов vk — как-то неприятно (сейчас нету, но раньше был). И особо ничего не поможет. Nojs и т.п. — блокируют, но тогда соцсети не работают, а когда не блокируют — грузится на любой чих на любом домене. Логика существующих блокировщиков… странная.
Самому писать не хочется, увы.Pongo
16.10.2016 15:48Используйте umatrix или ublock origin в продвинутом режиме (в нем можно отключить загрузку скриптов с внешних сайтов)
LynXzp
18.10.2016 23:56Ура, спасибо. Ublock origin и стоял, но в обычном режиме. (Я так понял что он в расширеном режиме заменяет собой и noscript и даже лучше него).
Pongo
19.10.2016 00:07Не совсем. Он не отключает джаваскрипт, а блокирует загрузку посторонних скриптов. В вики проекта есть руководство по режимам использования. Кроме того его можно использовать в режиме черного списка: по-умолчанию вся реклама на всех сайтах показывается, но можно добавить сайт в черный список — тогда на нем она будет резаться.
novoxudonoser
14.10.2016 14:22Для хрома в настройках приватности ставим галочку — блокировать cookie сторонних сайтов, и всё, этим способом за вами не следят.
shadovv76
02.02.2017 11:15абсолютно согласен, ограничиваться не стоит, с другой стороны принципиально держаться за них тоже не стоит, если нет целесообразности в комментарии shadovv76 2 февраля 2017 в 10:52 как раз написал пример собственного пересмотра.
Chikey
14.10.2016 19:11Мой Profilejacking который есть среди ссылок намного опасней и все еще реализуем на большинстве сервисов.
Botchal
14.10.2016 19:30+1Давно использую данный способ. Персонализирую форму входа через соц. сети. Логично выводить только «нужные» кнопки. ИМХО, ничего страшного в этом не вижу.
belurd
15.10.2016 01:14Кто-нибудь делал похожее, но более ориентированное на восточную Европу? В списке не хватает большого количества социальных сетей и сервисов актуальных в наших краях.
yamatoko
15.10.2016 04:15-3>Собственно, позиция большинства сервисов ясна — если уязвимость не приводит к краже персональных
дальше не читал.
funnybanana
15.10.2016 06:47+1Пока тут все видят уязвимость, я уже придумываю как я сортирую кнопочки авторизации у себя на сайте через социалки — используя сервисы где пользователь уже авторизован…
Т.е заходит пользователь на мой сайт, я ему предлагаю авторизоваться на сайте через VK|facebook|google+ и т.д — при этом на верх списка высовываю те кнопочки в которых пользователь уже авторизован… удобно же =)
Но… пока у меня дойдут до этого руки — возможно эту фишку уже пофиксят…izuware
15.10.2016 20:14А авторизован вконтакте совсем другой чел, а в твоем специально для таких случаев заведенном фйесбуке ты как раз сегодня не логинился… И получается нафига? Проще в кукисы записать что конкретному индивиду надо. А в первый раз так и быть, простыню вывалить.
QuantCat
15.10.2016 10:57У меня совсем интересные эффекты. Даже после разрешения скриптов на странице (стоит NoScript) и отключения AdBlock оно не нашло меня в Google+, VK и FB. Зато упорно говорит, что я есть на Blogger, а там меня в жизни не водилось.
Первое можно свалить на Disconnect, а второе-то откуда?
imobz
05.02.2017 16:03solarcoin.org энергетика
sumanai
19.10.2016 15:41Нет, браузеры давно блокируют попытки считывания параметров, которые позволяют отличить посещённые ссылки от не посещённых, точнее, они прикидываются, будто все ссылки не посещённые.
Bo0oM
Старинный способ, должно быть, о нем писали на хабре.
Один из примеров
https://bo0om.ru/zn2014/sd/