Будь-який сайт може отримати інформацію про те, в яких популярних сервісах ви авторизовані

Розробник Робін Лінус на своїй сторінці на 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:
Спасибі! Ми врахуємо цю загрозу.
Власне, позиція більшості сервісів зрозуміла: якщо вразливість не призводить до крадіжки персональних даних/даних облікового запису/не дає доступу до якої-небудь категорії даних, то це і не вразливість зовсім.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.