Любой сайт может получить информацию о том, в каких популярных сервисах вы авторизированы

    Разработчик Робин Линус на своей странице на GitHub Pages (визит по следующей ссылке небезопасен и его не рекомендуется выполнять с рабочего места, так как кроме видимой части сервисов страница проверяет, залогинены ли вы на сайтах для взрослых, а это останется в логах файрволла как попытка перехода прим.) продемонстрировал, как сайты могут снимать с вас «медийный отпечаток», то есть вести учет того, в каких популярных сервисах залогинены посетители даже без какой-либо авторизации на посещаемой странице.

    Для автора публикации «медийный отпечаток» выглядит следующим образом и является абсолютно верным:



    И это весьма неприятно.

    В чем суть


    Для начала автор заметки объясняет, как происходит процедура перенаправления на окно авторизации.

    Если мы перейдем по ссылке 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:
    Спасибо! Мы учтем эту угрозу.

    Собственно, позиция большинства сервисов ясна — если уязвимость не приводит к краже персональных данных/данных учетной записи/не дает доступа к какой-либо категории данных, то это и не уязвимость.

    Support the author
    Share post

    Comments 96

      +13
      Старинный способ, должно быть, о нем писали на хабре.
      Один из примеров
      https://bo0om.ru/zn2014/sd/
        0
        В Гугл+ опознаюсь как незалогиненный, хотя на самом деле залогинен (проверил несколько раз). Возможно, починили уязвимость. P.S.: На https://bo0om.ru/zn2014/sd/ определяется залогиненность и на Г+.
          0
          У меня ни чего не детектится ни по вашей ссылке, ни по ссылке в начале статьи.
            +2
            Надо открывать не в инкогнито. /s
              0
              Спасибо кэп.
                +1
                В обычном режиме тоже не определяет. Может дело в anti-social фильтрах ublock-а
                  0
                  Аналагочино с адблоком (социальные списки подключены), после выключения адблока начинает показывать что, где и чего.
                  –3
                  Если вы серьезно, то инкогнито не помогает.
                  А вообще это тревожная информация, т.к. может докатится до онлайн банкингов.
                  Пруф
                  image
                    0

                    Если вы залогинены в vk в incognito mode, то естественно.

                      0
                      ни разу не видел онлайн банкинга с автологином
                        0
                        Надеюсь, что не увидим.
                +3
                В Опере спасает настройка блокировки куков сторонних сайтов: https://imgd.ru/image/uchm, а при её отключении «всё становится явным».
                Как в других браузерах, проверял кто?
                  +1
                  Да, у меня также всегда включена эта опция в Хроме и также не определила подключение к сайтам. Все сайты, среди посещаемых мной, которые используют внешнюю аутентификацию, нормально работают с этой опцией.
                    +1
                    А как в Мозилле это сделать?
                      +3

                      Надеюсь, эта информация вам поможет

                        +2
                        Tools->Options->Privacy->History: Firefox will: заменить «remember history» на «use custom settings for history», потом «accept third party cookies» -> Never,
                          0
                          Включил. На всякий случай :)
                      0
                      Спасибо за подсказку. Интересно, а как может включение этой опции отразиться на работе с сайтами и UX, в целом? Ну, кроме того, что таргетированной рекламы, по идее, должно стать меньше (что лично я считаю плюсом).
                        +1
                        Особо не разбирался, но, если не ошибаюсь, при включенной опции у меня не работает вебвизор Яндекса. Он как бы зацикливается при открытии страницы с картой кликов, ссылок и т.д.
                          0
                          Спасибо. То есть всё-таки в некоторых случаях функциональность страдает. Буду иметь в виду.
                      +3
                      Demonstration

                      You are logged in to:
                      No platform
                      (or you're using something like Privacy Badger)
                        +1
                        adblock
                          +3
                          Т.е. в 2016 году уже вариант что люди могут быть никуда не залогинены в принципе даже теоретически не рассматривается?
                            +1
                            я столкнулся ровно с таким же сообщением, и после отключения adblock все пошло-поехало.
                            • UFO just landed and posted this here
                                0
                                Это модно лишь в узких кругах как наш в Вами. Я думаю, что 90% пользователей даже не задумывались над анонимностью в вебе, что это такое и зачем оно надо.
                              +1
                              При выключенном js такое же сообщение было =)
                                +3
                                Адблок адблоку рознь. Тут скорее дело в фильтрах, потому что у меня при включении «коробочного» adblock все работало. Собственно, с ним и сделан скриншот на КДПВ.
                                  0
                                  Или фильтры в Опере:
                                  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
                                    0
                                    У меня включен Адблок, но было видно, где я залогинен.
                                    +2
                                    Privacy Badger — хорошее расширение, рекомендую
                                      0
                                      Лучше Ghostery?
                                        +4
                                        У меня Ghostery, не защитил.
                                          0
                                          Трудно сказать, еще не тестил. Но Privacy Badger рекомендуется EFF.
                                            0
                                            Согласно 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.)
                                        +10
                                        Можно сделать умные соц. кнопки — показывать только те сервисы, в которых авторизован. Ничего лишнего.
                                          +5
                                          соц. кнопки сделаны не для того, чтобы постить в той соцсети, в которой залогинен, а чтобы постить в той соцсети, в которой ты можешь залогиниться)
                                            +7
                                            Или показывать их первыми в списке.
                                              +10
                                              а вот уже юзер френдли)
                                          0
                                          В Vivaldi чудо-сайт ничего не видит.
                                            +5
                                            Надеюсь, нормальные вебмастеры используют этот трюк, чтобы показывать кнопку «ПОДЕЛИТЬСЯ» и выводить только те соцсети, где ты есть. А не выводить 1000 иконок всех соцсетей мира, на которые даже смотреть не хочется.
                                              +1
                                              Или, как вариант, выводить «авторизованные» соцсети в первую очередь, скрывая остальные «под кат».
                                              То же самое можно делать для кнопок «войти через...». По идее, должно повысить конверсию.
                                              +1
                                              Пардоньте, а какой из указанных на картинке сервисов является «сайтом для взрослых»?
                                                +1
                                                Парсит в фоновом режиме.
                                                  +1

                                                  А почему в исходниках этого нет?

                                                –10
                                                Пустота. Этот сайт ничего обо мне не знает, как и все остальные, которым я не доверяю и не включаю js

                                                image
                                                  +1
                                                  Но даже когда я включил js, то тоже ничего не узнал, ибо я пользуюсь Chostery и adblock

                                                  image
                                                    0
                                                    И Вам не стыдно быть «велосипедистом»?
                                                    К тому же это тянет на гнусное предательство Вашей профессии!

                                                    Ирония конечно )

                                                      0
                                                      да, Ghostery в этом отношении рулит. Как раз ловит то что отслеживает (яндекс-метрики всякие, гугл аналитику и кнопки соц.сетей) и блокирует как отображение так и активность этих скриптов (зачастую излишнюю). Приятно когда гугл не начинает рекламировать памперсы после посещения двух десятков сайтов с памперсами (да купил я уже, не надо мне уже, все хватит, горшочек не вари — но алгоритм всё-же туповат и продолжает).
                                                        0
                                                        Стоят nojs, ghostery и ublock origin. Когда влючил вскрипты эта страница обнаружила что я залогинен на github, но потом перепроверил увидев эти комментарии — уже не обнаруживает. Странно.

                                                        Страница https://bo0om.ru/zn2014/sd/ аналогично обнаружила только при первом входе.

                                                        Беда-печаль.
                                                          0
                                                          Прошу прощения, сам виноват. Отключил сторонние cookies по совету выше. (значит помогает)
                                                    +1
                                                    RequestPolicy и подобные плагины, обрезают всю эту слежку на корню.
                                                    А вообще, ждём контекстные контейнеры в Firefox. Если их использовать с умом, тогда такое вычисление будет невозможно в принципе.
                                                      +2

                                                      Вообще так Гугл и Яндекс знают не только где я залогинен, но все чем я интересовался в последнее время. Стоит поискать какой-то товар, как сразу все рекламные блоки наполняются соответствующей рекламой. Если не параноить со всякими RequestPolicy, то приватность в интернете штука вообще весьма относительная.

                                                        0
                                                        Попробуйте включить опцию DNT (Do Not Track), Честные сервисы аналитики учитывают ее, а так же можно включить блокирование сторонних кукисов. Как результат — меньше мусора в истории и гугловая реклама не предлагает ничего из того, что ты посещал или гуглил. Для этого нету необходимости ставить сторонние плагины.
                                                          +5
                                                          >Честные сервисы аналитики
                                                          +9
                                                          Я на этом чуть не спалился, когда жене обручальное кольцо выбирал. Никакой секретности.
                                                            0

                                                            У яндекса учет интересов при показе рекламы можно отключить https://yandex.ru/tune/adv/

                                                              +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

                                                              … после этого Адвордс реклама а также разные трекинг миханизмы перестают работать.
                                                              –1
                                                              Ни где увы от слежки не спастись, все как ни крути делается не для удобства а на оборот, что бы больше контролировать народ.Выпуская всякие луковицы, выдавая будто они прибавляют +99 к вашей беспалевности. Как мне кажется это только для нас, обычных пользователей это уязвимость…
                                                                +2
                                                                все как ни крути делается не для удобства а на оборот, что бы больше контролировать народ

                                                                А по моему как раз для удобства народ выкладывает всю информацию о себе в соцсети, дают знать о своём местоположении очередному голосовому помощнику, и т.д.
                                                                  0
                                                                  Тут на самом деле смотря с какой стороны посмотреть, главное оставаться в нейтралитете… Да бы не было войны ахахах
                                                                +2
                                                                Автор подобной страницы получит список сервисов с которым скрытно можно сделать… что? Я думаю то-же самое что и на странице «логин с помощью OpenID». Причем тут плюсом можно выяснить наиболее предпочтительную сеть.
                                                                  –8
                                                                  Показывает только логины в браузере?
                                                                  Запущенные скайп, баттлнет и стим не видит.
                                                                    +13
                                                                    И rm -rf / сделать удаленно не дает, бесполезный хак, плохо зделали, тупо.
                                                                    +2
                                                                    Могу только порекомендовать нормальный подход к использованию браузеров:
                                                                    https://github.com/gorhill/uMatrix
                                                                      0
                                                                      Интересно, какая реакция ожидается от того же фейсбука, если возможность определения, авторизован посетитель на фейсбуке или нет, есть в JS SDK.
                                                                        –1
                                                                        Да никакой абсолютно. Т.к. если ты приложение не авторизовал то ничего не узнаешь…
                                                                          0
                                                                          Этот метод предназначен для того, чтобы определять, авторизовал пользователь приложение, или нет. Для использования авторизация не нужна. Почитайте по ссылке.
                                                                            –1
                                                                            Только вы не внимательно прочитали документацию… Метод предназначен предназначен для того, чтобы определять, авторизовал посетитель приложение, или нет. Для использования авторизация не нужна. И если посетитель приложение не авторизовал то невозможно получить данные о пользователе ФБ, а соответственно «никакой угрозы» конфиденциальности нет. ФБ ответит именно так на багрепорт…
                                                                              +1
                                                                              Боюсь, скорее это вы неверно интерпретировали мой комментарий :)
                                                                              Я говорю о том, что странно ожидать от фейсбука какой-то реакции, раз уж в самом фейсбучном SDK есть возможность без всяких авторизаций определить, залогинен посетитель в фейсбуке или нет, то есть сделать ровно то же самое, что описано в статье. О доступе к прочей информации о пользователе я не говорил.
                                                                        +10
                                                                        Методу сто лет в обед. С добрым утром, как говорится. Как спалось последние четыре года?

                                                                        http://www.tomanthony.co.uk/tools/detect-social-network-logins/ — на дату статьи посмотри
                                                                          0
                                                                          Кое-что неправильно определяет — Netflix, например.
                                                                            +2
                                                                            По-моему, это действительно сложно считать уязвимостью. Но вот у некоторых сервисов присутствует возможность разлогинить юзера без его непосредственного участия, что грустно — вот эти ребята так делают (ОСТОРОЖНО! Вы можете быть разлогинены в некоторых сервисах после перехода по ссылке): http://superlogout.com. Правда, работает мало где — толи уже прикрыли дырки, толи никогда и не работало, но в gmail на текущий момент меня выкидывает.
                                                                              0

                                                                              В гмыле выкидывает по каждому подозрительному чиху

                                                                                0

                                                                                GitHub не выкинул

                                                                                0
                                                                                Гораздо интереснее узнать кто конкретно :)
                                                                                  0
                                                                                  Как от такой уязвимости защищаться? Проверять Referrer?
                                                                                    +1
                                                                                    Резать все обращения к социалкам (только на уровне расширения броузера). Разрешать только по белому списку социалка+сайт. Думаю во всяких гостери и адблоках должен быть похожий функционал, но вообще не проблема накидать самому на основе любого бойлерплейта (https://github.com/orbitbot/chrome-extensions-examples).
                                                                                      0
                                                                                      Я имел в виду — как сайту защищаться, чтобы его логины так не смотрели. Простой способ — убрать все картинки с основного домена (где куки сидят), но как-то это кажется кривовато.
                                                                                        0
                                                                                        А, в этом смысле. Токены. То есть вместе с кукой (http only) должен передаваться токен (js only) — при ПРАВИЛЬНОЙ реализации это МОЖЕТ гарантировать что запрос сделан вашим кодом.
                                                                                        0
                                                                                        Да, это бесит. Я когда захожу в vk — хочу чтобы там все работало (скрипты от vk, кнопочки и финтиклюшки), а когда на habrahabr — видеть в списке загружаемых скриптов vk — как-то неприятно (сейчас нету, но раньше был). И особо ничего не поможет. Nojs и т.п. — блокируют, но тогда соцсети не работают, а когда не блокируют — грузится на любой чих на любом домене. Логика существующих блокировщиков… странная.

                                                                                        Самому писать не хочется, увы.
                                                                                          0

                                                                                          Используйте umatrix или ublock origin в продвинутом режиме (в нем можно отключить загрузку скриптов с внешних сайтов)

                                                                                            0
                                                                                            Ура, спасибо. Ublock origin и стоял, но в обычном режиме. (Я так понял что он в расширеном режиме заменяет собой и noscript и даже лучше него).
                                                                                              0

                                                                                              Не совсем. Он не отключает джаваскрипт, а блокирует загрузку посторонних скриптов. В вики проекта есть руководство по режимам использования. Кроме того его можно использовать в режиме черного списка: по-умолчанию вся реклама на всех сайтах показывается, но можно добавить сайт в черный список — тогда на нем она будет резаться.

                                                                                      0
                                                                                      Для хрома в настройках приватности ставим галочку — блокировать cookie сторонних сайтов, и всё, этим способом за вами не следят.
                                                                                        0
                                                                                        Отличная возможность — беру на вооружение!
                                                                                          0
                                                                                          Мой Profilejacking который есть среди ссылок намного опасней и все еще реализуем на большинстве сервисов.
                                                                                            +1
                                                                                            Давно использую данный способ. Персонализирую форму входа через соц. сети. Логично выводить только «нужные» кнопки. ИМХО, ничего страшного в этом не вижу.
                                                                                              0
                                                                                              Кто-нибудь делал похожее, но более ориентированное на восточную Европу? В списке не хватает большого количества социальных сетей и сервисов актуальных в наших краях.
                                                                                              • UFO just landed and posted this here
                                                                                                  +1
                                                                                                  Пока тут все видят уязвимость, я уже придумываю как я сортирую кнопочки авторизации у себя на сайте через социалки — используя сервисы где пользователь уже авторизован…

                                                                                                  Т.е заходит пользователь на мой сайт, я ему предлагаю авторизоваться на сайте через VK|facebook|google+ и т.д — при этом на верх списка высовываю те кнопочки в которых пользователь уже авторизован… удобно же =)

                                                                                                  Но… пока у меня дойдут до этого руки — возможно эту фишку уже пофиксят…
                                                                                                  • UFO just landed and posted this here
                                                                                                      0
                                                                                                      А авторизован вконтакте совсем другой чел, а в твоем специально для таких случаев заведенном фйесбуке ты как раз сегодня не логинился… И получается нафига? Проще в кукисы записать что конкретному индивиду надо. А в первый раз так и быть, простыню вывалить.
                                                                                                      0
                                                                                                      У меня совсем интересные эффекты. Даже после разрешения скриптов на странице (стоит NoScript) и отключения AdBlock оно не нашло меня в Google+, VK и FB. Зато упорно говорит, что я есть на Blogger, а там меня в жизни не водилось.
                                                                                                      Первое можно свалить на Disconnect, а второе-то откуда?
                                                                                                        0
                                                                                                        сложности какие… разве нет возможности считывать цвет ссылок и собирать «посещённые» из списка на скрытом диве каком-нить?
                                                                                                          0
                                                                                                          Нет, браузеры давно блокируют попытки считывания параметров, которые позволяют отличить посещённые ссылки от не посещённых, точнее, они прикидываются, будто все ссылки не посещённые.

                                                                                                        Only users with full accounts can post comments. Log in, please.