[Информационная безопасность, JavaScript, Google Chrome, Браузеры] Новая утечка истории браузера через favicon
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Недавно наткнулся на это исследование pdf (по его мотивам уже была статья на хабре), после прочтения, решил поискать более интересные способы использования F-Cache. Объективно, схему с редиректами никто в здравом уме не будет ставить на свой сайт. Это утечка, но утечка представляющая больше теоретический интерес, чем практический(имхо). Обозначил цель(найти способ проверить F-Cache через javascript) и начал поиски. В ходе экспериментов выделил несколько способов это сделать, но опишу самый интересный, на мой взгляд. Заранее предупреждаю — это не кроссбраузерное решение. На данный момент, проверял только на десктопных хромах.Предварительный тест можно пройти здесь: https://favicon-leak.site/Как это работаетУ хрома есть два типа ресурсного кеша: disk и memory. Как многие догадались, disk cache это перманентное хранилище ресурсов, но со своей задержкой на чтение(1+ ms). В свою очередь, memory cache используется для временного хранения часто используемых ресурсов, а чтение, в среднем, мгновенное (0 ms). Таким образом, помещая ресурс в memory cache браузер уменьшает количество чтений с диска и увеличивает скорость повторной загрузки самих ресурсов.Когда мы первый раз загружаем картинку через <img>, то ее либо загрузит по src, либо достанет из disk cache. В обоих случаях эта картинка, чаще всего, помещается в memory cache. Рассмотрим такой javascript код:
var img = new Image();
img.src = some_image_url;
if (img.complete && img.height + img.width > 0) {
// Это условие TRUE, только когда картинка успешно была прочитана из memory cache
}
Именно этот код позволяет проверить наличие картинки в memory cache. Из этого можно сделать такой вывод: если загрузить <img> минимум два раза, то во второй раз картинка должна загружаться уже из memory cache.
<img> + <img> + <img> + <img>Поведение тега <link rel="icon"> отличается от <img> и повторная загрузка одной картинки всегда читает ее с диска:
<link> + <link> + <link> + <link>Ключевой находкой стало такое поведение браузера:
<img> + <img> + <link> + <img>Как мы видим, после загрузки картинки через <link>, она помещается в disk cache и при повторном чтении ее через <img> она загружается с диска(даже если уже была в memory). Это нормальное поведение браузера для картинки, которой нет в F-Cache. НО! Если картинка для <link> загружена из F-Cache, то это никак не влияет на состояние, предварительно загруженной в memory cache, картинки. Вероятно, это связанно с тем, что F-Cache никак не взаимодействует с сетевым уровнем. Следовательно, если после
<img> + <img> + <link> + <img> <— загрузка этой картинки произошла мгновенно, то мы можем сделать вывод, что эта картинка была в F-Cache т.к. она не была удалена из memory cache. Вот и вся хитрость, позволяющая проверять наличие картинки в F-Cache.Важно заметить, что этот метод не 100%-но надежный, т.к. мы не можем точно проверить была ли вообще загруженна картинка в <link>(например, могла произойти сетевая ошибка), поэтому я использую setTimeout. Чем больше timeout, тем выше вероятность, что <link> успел прогрузиться.Про F-CacheF-Cache привязан к конкретному профилю, поэтому если вы хотите протестировать с нуля, то лучше всего создать новый профиль в браузере. Время жизни иконок в F-Cache индивидуально для каждой иконки и зависит от cache policy домена-владельца. F-Cache в инкогнито работает только в read-only режиме.Про сайт https://favicon-leak.site/Используя автоматизированный хром, я собрал небольшой список ссылок на favicon-ы популярных сайтов. https://favicon-leak.site/ проверяет иконки из этого списка. Возможно, когда вы будете читать эту статью какие-то ссылки уже устареют и будут возвращать ложноотрицательный результат. Код на github
===========
Источник:
habr.com
===========
Похожие новости:
- [Информационная безопасность, Исследования и прогнозы в IT, Законодательство в IT] Почему Microsoft перестала бороться с пиратством своего ПО (перевод)
- [Информационная безопасность, Microsoft Azure, Облачные сервисы] Microsoft подтвердила утечку исходного кода Azure, Exchange и Intune при атаке на SolarWinds
- [JavaScript, ООП] Создание квадратизированной галереи проектов на JS
- [Информационная безопасность, Законодательство в IT] Коммерческая тайна. Частые вопросы и ответы
- [Исследования и прогнозы в IT, Софт] Chrome OS вышла на второе место по популярности среди десктопных ОС
- [Программирование, Разработка игр, Управление персоналом, Социальные сети и сообщества] LuxCity — стратегия для разработчиков, где код решает все
- [JavaScript, VueJS] Nuxt.js app от UI-кита до деплоя
- [Информационная безопасность, Облачные сервисы] Используем чек-лист ENISA для проверки безопасности облачного провайдера и чтения SLA
- [Информационная безопасность, Сетевые технологии, Разработка систем связи, Сотовая связь] Как не спалить закладку полиции?
- [Информационная безопасность, Управление разработкой, DevOps] Оценочный уровень доверия (ОУД4) и ГОСТ Р ИСО/МЭК 15408-3-2013. Введение
Теги для поиска: #_informatsionnaja_bezopasnost (Информационная безопасность), #_javascript, #_google_chrome, #_brauzery (Браузеры), #_chrome, #_fcache, #_favicon, #_utechka (утечка), #_leak, #_informatsionnaja_bezopasnost (
Информационная безопасность
), #_javascript, #_google_chrome, #_brauzery (
Браузеры
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 09:22
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Недавно наткнулся на это исследование pdf (по его мотивам уже была статья на хабре), после прочтения, решил поискать более интересные способы использования F-Cache. Объективно, схему с редиректами никто в здравом уме не будет ставить на свой сайт. Это утечка, но утечка представляющая больше теоретический интерес, чем практический(имхо). Обозначил цель(найти способ проверить F-Cache через javascript) и начал поиски. В ходе экспериментов выделил несколько способов это сделать, но опишу самый интересный, на мой взгляд. Заранее предупреждаю — это не кроссбраузерное решение. На данный момент, проверял только на десктопных хромах.Предварительный тест можно пройти здесь: https://favicon-leak.site/Как это работаетУ хрома есть два типа ресурсного кеша: disk и memory. Как многие догадались, disk cache это перманентное хранилище ресурсов, но со своей задержкой на чтение(1+ ms). В свою очередь, memory cache используется для временного хранения часто используемых ресурсов, а чтение, в среднем, мгновенное (0 ms). Таким образом, помещая ресурс в memory cache браузер уменьшает количество чтений с диска и увеличивает скорость повторной загрузки самих ресурсов.Когда мы первый раз загружаем картинку через <img>, то ее либо загрузит по src, либо достанет из disk cache. В обоих случаях эта картинка, чаще всего, помещается в memory cache. Рассмотрим такой javascript код: var img = new Image();
img.src = some_image_url; if (img.complete && img.height + img.width > 0) { // Это условие TRUE, только когда картинка успешно была прочитана из memory cache } <img> + <img> + <img> + <img>Поведение тега <link rel="icon"> отличается от <img> и повторная загрузка одной картинки всегда читает ее с диска: <link> + <link> + <link> + <link>Ключевой находкой стало такое поведение браузера: <img> + <img> + <link> + <img>Как мы видим, после загрузки картинки через <link>, она помещается в disk cache и при повторном чтении ее через <img> она загружается с диска(даже если уже была в memory). Это нормальное поведение браузера для картинки, которой нет в F-Cache. НО! Если картинка для <link> загружена из F-Cache, то это никак не влияет на состояние, предварительно загруженной в memory cache, картинки. Вероятно, это связанно с тем, что F-Cache никак не взаимодействует с сетевым уровнем. Следовательно, если после <img> + <img> + <link> + <img> <— загрузка этой картинки произошла мгновенно, то мы можем сделать вывод, что эта картинка была в F-Cache т.к. она не была удалена из memory cache. Вот и вся хитрость, позволяющая проверять наличие картинки в F-Cache.Важно заметить, что этот метод не 100%-но надежный, т.к. мы не можем точно проверить была ли вообще загруженна картинка в <link>(например, могла произойти сетевая ошибка), поэтому я использую setTimeout. Чем больше timeout, тем выше вероятность, что <link> успел прогрузиться.Про F-CacheF-Cache привязан к конкретному профилю, поэтому если вы хотите протестировать с нуля, то лучше всего создать новый профиль в браузере. Время жизни иконок в F-Cache индивидуально для каждой иконки и зависит от cache policy домена-владельца. F-Cache в инкогнито работает только в read-only режиме.Про сайт https://favicon-leak.site/Используя автоматизированный хром, я собрал небольшой список ссылок на favicon-ы популярных сайтов. https://favicon-leak.site/ проверяет иконки из этого списка. Возможно, когда вы будете читать эту статью какие-то ссылки уже устареют и будут возвращать ложноотрицательный результат. Код на github =========== Источник: habr.com =========== Похожие новости:
Информационная безопасность ), #_javascript, #_google_chrome, #_brauzery ( Браузеры ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 09:22
Часовой пояс: UTC + 5