Это двадцать третий пост из нашей серии о новых защитах приватности и конфиденциальности в браузере Brave.
1. Скрываем надоедливые попапы «открыть в приложении»
Начиная с версий 1.44 для iOS и 1.49 для Андроида и десктопов, Brave будет скрывать надоедливые попапы «открыть в приложении», которые всплывают на многих сайтах. Во‑первых, такие уведомления раздражают: они задают вам не имеющие к делу вопросы и отвлекают вас от браузинга. Что хуже, часто такие нотификации могут вредить конфиденциальности: сайты прекрасно знают, что нативные версии их приложений свободны от жёстких мер защиты приватности, которые Brave налагает на сайты, поэтому они постоянно хотят подтолкнуть пользователей к использованию своих нативных приложений, которые часто не гнушаются сбором не предназначенных им данных.
Brave будет скрывать подобные уведомления, используя отличный список Fanboy»s Mobile Notifications List, который поддерживается в том числе и членами нашей команды. Если вы хотите отключить эту функцию, вы можете сделать это, перейдя в настройки и отключив Fanboy»s Mobile Notifications List из списка фильтров контента.
2. Дополнительная защита от атак типа pool-party
Начиная с версии 1.49, версии Brave для десктопов и Андроида будут включать в себя дополнительные меры защиты от атак типа pool‑party. Это тип атак, который продвинутые и мотивированные трекеры могут использовать, чтобы слинковать ваше браузерное поведение на различных сайтах (а в некоторых браузерах и в различных профилях) с целью слежки. Как мы уже писали, хоть большинство браузеров и подвержены подобным атакам, некоторые уязвимы больше других.
Начиная с версии 1.35, Brave предоставлял защиту от формы такой атаки, которая представлялась наиболее угрожающей на тот момент. Однако же, недавно наши исследователи установили, что существуют другие способы проведения и оптимизации этой атаки (с точки зрения более быстрой передачи данных через границы сайтов). Естественно, мы выпустили фикс, который защищает от этих дополнительных механизмов атаки: для этого мы разделяем пул ресурсов Server Sent Events в Chromium. Вы можете узнать больше о подобных атаках в нашей статье, которая будет представлена на конференции USENIX Security 2023.
3. Улучшенная блокировка рекламы с помощью процедурных косметических фильтров
Начиная с версий 1.45 для iOS и 1.49 для Андроида и десктопов, Brave будет частично поддерживать процедурные косметические фильтры, продвинутый способ определения того, какие элементы страницы нужно скрывать при блокировке рекламы и других раздражающих элементов. Большинство косметических фильтров определяются через селекторы CSS, а спискам фильтрации достаточно лишь указать на нежелательные элементы страницы, которые нужно скрыть, используя ту же систему, которую веб‑дизайнеры используют для элементов стиля на странице.
В большинстве случаев этого относительно простого подхода достаточно; однако же некоторые сайты пытаются обходить инструменты блокировки контента. В таких случаях требуется более тонкий подход к тому, какие элементы страницы нужно скрыть. Процедурные косметические фильтры являются важным инструментом для решения этой проблемы. Подобных фильтров много, и Brave поддерживает два самых популярных (наша библиотека adblock‑rust поддерживает правила:has и:‑abp‑has), а в скором времени мы планируем внедрение поддержки ещё большего количества правил фильтрации.
4. Защита от фингерпринтинга по размеру экрана
Начиная с версий 1.45 для iOS, 1.48 для десктопов, и 1.50 для Андроида, Brave усиляет меры защиты от фингерпринтинга, не позволяя сайтам идентифицировать вас на основе размера вашего экрана и расположения окна браузера. Трекеры пытаются идентифицировать вас, собирая уникальный цифровой отпечаток из набора многих черт, отличающих вас от других пользователей. Вряд ли пользователь браузера Х уникален в своей стране, но мы можем удостовериться в его уникальности, если к стране и браузеру добавим язык, конкретную версию браузера, конкретную версию параметров железа и т. д.
Размер вашего экрана также может быть использован в этих целях. Сами по себе ширина и высота вашего экрана не выдадут вас, но могут быть использованы в качестве одного из компонентов уникального цифрового отпечатка, как и позиция браузера на экране. Для того, чтобы бороться с подобной слежкой, Brave не даёт трекерам узнать эти параметры. Во‑первых, Brave сообщает веб‑скриптам, что размеры вашего экрана приблизительно совпадают с высотой и шириной вашего браузерного окна. Это не позволяет трекерам узнать ваш истинный размер экрана. Во‑вторых, Brave предоставляет немного отличающиеся параметры каждому сайту в рамках каждой сессии (как и в случае других наших уникальных механизмов защиты, основанных на рандомизации). Это не даёт трекерам повторно идентифицировать вас на разных сайтах или при нескольких посещениях одного и того же сайта.
Комментарии (34)
ifap
00.00.0000 00:00+1Это тип атак, который продвинутые и мотивированные трекеры могут использовать
Не пора ли уже отказаться от спецтерминологии и перейти на общеупотребимую? Это тип атак, который агрессивные трояны могут использовать. Мне искренне непонятно, почему описывается поведение вредоносов и методы борьбы с ними, но называется это все трекерами, аналитикой, скриптами, попапами и т.п., хотя есть прекрасный обобщающий термин?
BraveSoftware Автор
00.00.0000 00:00+1Потому что отличительная черта трояна - это его маскировка под нормальное ПО и исполнение на клиенте. Трекеры не скрывают своего предназначения, и могут быть полностью серверными (даже если посчитать, что JS-код это "клиентское" приложение).
Кроме того, троян - это именно вредонос, а трекеры и аналитика (например, гугловское или яндексовое добро) официально не являются малварью.
ifap
00.00.0000 00:00Трекеры и маскируются под нормально ПО, даже целую легенду имеют: для удобства пользователей, для изучения аудитории, в помощь вебмастеру, тогда как реальная цель - только одна: рекламное профилирование пользователей в интересах оператора. Это и есть вредоносная (для посетителя сайта) активность, а что она "официально" таковой не названа... напомните, кто и кем уполномочен выдавать малвари статус официальной малвари? ;)
BraveSoftware Автор
00.00.0000 00:00+1Я по-человечески с вами в целом согласен, но по причинам которые уже написал, в статье не буду так переводить :)
ifap
00.00.0000 00:00+1О, я не жду, что Вы броситесь грудью на амбразуру корпоративной политики, но кто-то же должен обозначить проблему ;)
gmtd
00.00.0000 00:00+1Во‑первых, Brave сообщает веб‑скриптам, что размеры вашего экрана приблизительно совпадают с высотой и шириной вашего браузерного окна. Это не позволяет трекерам узнать ваш истинный размер экрана.
Это еще что за ужас?
Вы меняете поведение стандартных js функций?
BraveSoftware Автор
00.00.0000 00:00+1конечно
gmtd
00.00.0000 00:00На нашем легальном сайте нам нужно бороться с мультиаккаунтингом, который используется для нехороших целей
Получается ваш браузер в данном случает на стороне зла?
BraveSoftware Автор
00.00.0000 00:00Я могу попробовать ответить на ваш вопрос, если вы уточните как определить сторону зла, и как определить принадлежность к ней браузера.
gmtd
00.00.0000 00:00-1Сторона зла - та, которая хочет обмануть (Сатана - отец лжи, Иоанн 8:44)
Технические [не ожидаемые] особенности вашего браузера помогают обманывать
В нашем случае мультиаккаунтинг это потеря бизнесом денег, а не просто троллинг в соцсетях.
BraveSoftware Автор
00.00.0000 00:00+6"Помогают" обманывать ещё интернет, компьютеры, а также устная и письменная речь на любом естественном языке. Если это всё на стороне зла, то наверное, любой браузер на той же самой стороне.
Кроме того, наши технические особенности описаны на английском и русском языках (например, в этой статье), их реализация размещена в открытом доступе на гитхабе, поэтому они никак не являются "не ожидаемыми".
Встречный вопрос - почему вы интересуетесь злом и потерей денег бизнесом в одном контексте?
gmtd
00.00.0000 00:00-6Не надо передергивать. Интернет, компьютеры, ваш браузер - это средства коммуникации. Ваша же фича - нечто иное. Она нарушает спецификацию javascript функций. Нормальную работу фронтэнда. Заставляет дополнительно использовать какие-то средства определения клиента. Если бы злоумышленник явно ставил подобные средства анонимизации - это одно. Вы же распространяете это на всех.
Я пользуюсь вашим браузером, он мне нравится. Так же как и его защитником от трекеров и рекламы. Но не вижу причин, почему нужно было делать именно этот функционал.
Встречный вопрос - почему вы интересуетесь злом и потерей денег бизнесом в одном контексте?
Не понимаю, что на что вы тут натягиваете. Любой обман - это зло. В моем частном случае он дает еще и финансовые убытки, то есть подходит под статью УК. Не было бы убытков - не было бы уголовки, была бы только этика.
BraveSoftware Автор
00.00.0000 00:00+3В вашем комментарии ошибка: я вовсе не передёргиваю, я вас троллю, потому что в вашем комментарии содержится совершенно неуместное морализаторство и цитирование библии, и всё это публично под технической статьёй.
Я сообщил вам, что могу попробовать ответить на ваш вопрос, если вы определите сторону зла, вы определили её через обман. Могу повториться, в нашей фиче никакого обмана нет - код её общедоступен, описание опубликовано в статье. Таким образом, наш браузер на стороне зла не находится.
Чтобы вернуть ветку в техническое русло, достойное площадки Хабра, могу я поинтересоваться у вас, какой именно пункт спецификации нарушает то изменение, которое вы процитировали?
gmtd
00.00.0000 00:00BraveSoftware Автор
00.00.0000 00:00+3Да, действительно, наш браузер возвращает Web Exposed Screen information.
https://w3c.github.io/csswg-drafts/cssom-view/#web-exposed-screen-information
Процитирую это определение, для читателей, которые не будут переходить по ссылке
User agents may choose to hide information about the screen of the output device, in order to protect the user’s privacy.
...
The Web-exposed screen area is one of the following:
* The area of the output device, in CSS pixels.
* The area of the viewport, in CSS pixels.Таким образом, возвращение размеров вьюпорта вместо размеров физического устроства никак не нарушает спецификацию, зато защищает приватность пользователей.
gmtd
00.00.0000 00:00А разве вы возвращаете размеры вьюпорта?
Судя по тексту, вы возвращаете приблизительное значение. Рандомную величину.
BraveSoftware Автор
00.00.0000 00:00Конечно.
Обратимся к спецификации https://w3c.github.io/csswg-drafts/css2/#viewport①
viewport - a window or other viewing area on the screen
Мы каждому сайту возвращаем значение, которое является размером некоторой "other viewing area on the screen". Это прерогатива браузера, определять что именно у него является viewing area, какой у неё размер, как именно эту область отображать.
gmtd
00.00.0000 00:00А зачем обрезали определение?
User agents for continuous media generally offer users a viewport (a window or other viewing area on the screen) through which users consult a document.
Viewport - это видимая пользователю область веб-страницы, то, что может увидеть пользователь, не прибегая к прокрутке.
Спорить нет смысла. Вы взяли Хромиум, который поддерживает данную спецификацию, и изменили его так, что стандартные javascript функции ведут себя не по спецификации. И написали об этом мелким шрифтом где-то. Вы сами признали, что меняете сами функции, а не изменяете размер экрана.
BraveSoftware Автор
00.00.0000 00:00Прочитайте спеку ещё раз. Там нет ничего про "видимая" или про "прокрутку". Зато там есть слово "other viewing area on the screen".
Есть например две разновидности headless браузера Хромиум. В них вообще нет ничего видимого и никакой прокрутки - они ведут себя не по спецификации?
gmtd
00.00.0000 00:00Ну давайте вы кому-нибудь другому доказывать будете, что viewport - это то, что каждому хочется, и что возвращать в window.screen.width разные значения при одинаково развернутом браузере на одном и том же сайте - это нормально и по спецификации.
BraveSoftware Автор
00.00.0000 00:00viewport - это то, что определено в спеке как viewport, могу в третий раз повторить что это other viewing area on the screen
одному и тому же сайту отдаются одинаковые значения, непонятно почему вы пишете, что они будут разные. Это нормально и по спецификации.
dynamica
00.00.0000 00:00+1Я думаю, у вас возможно с вашим оппонентном возникло некоторе недопонимание.
Согласно спецификациям, если читать их целиком - viewport, который viewing area on the screen, это та часть экрана, которая отводится непосредственно под рендеринг (отображение) того содержимого, которое в определенный момент времени находится в области этого самого вьюпорта - в области видимости пользователя. Фактически, если мы рассматриваем обычный браузер и экран, или гипотетически, если это оффскрин браузер - не суть важно. Важно то, что непосрдественно на размеры вьюпорта может быть завязана какая-то логика.
Например, я могу использовать из js Viewport API, для динамического позиционирования какого-то элемента. И этот элемент должен рендерится на экране адекватно этому самому вьюпорту.
Браузер TOR, напрмиер, проводя политику деметрикатизации вьюпорта делает вьюпорты фиксированного размера у всех пользователей браузера, просто фактически область рендеринга сайта не занимает всю ширину экрана.
Насколько понял я, как и скорее всего ваш оппонент, вы просто подставлете в апи виртуальные размеры вьюпорта, которые не отражают его действительный размер (не размер окна, а именно вьюпорта). Если это так, то вот пример приведенный абзацем выше, с динамическим позиционированием контента относительно таких размеров в вашем браузере будет работать неправильно.
Если же это не так, то вас просто неправильно поняли ни я, ни ваш оппонент, что вы имеете ввиду под "сообщает веб‑скриптам, что размеры вашего экрана приблизительно совпадают". Размеры вьюпортов во всех браузерах и так приблизительно совпадают с размера окна - вьюпорты в браузерах следующих спекам занимают тот размер окна, за вычетом ширины границ окна, рамок, заголовков, адресных панелей и прочих элементов интерфейса браузера не относящихся к области просмотра.
В случае же если вы просто подменяете значения размера вьюпорта на случайные (лишь приблизительно равные действительному размеру области просмотра), то вы нарушаете спецификацию, и потенциально ломаете логику работы скриптов на это завязанных - а они могут не иметь никакого отношения к метрикам или телеметрии.
Помимо того, что размеры вьюпорта можно брать из js api, на него завязаны те же единицы измерения в css - vw/vh.
vikarti
00.00.0000 00:00А кстати вот вопрос.
Допустим у меня Brave запущен в оконном режиме в WMR Home (в этом случае посреди ВР-окружения будет просто окошка браузера висеть, для SteamVR есть софт чтобы так делать тоже), разумеется одет ВР-шлем то какое разрешение уйдет? А какое должно?.. Окна? Что-то похожее на разрешение окна? чего то что система считает монитором на котором это запущено(к реальному монитору это запросто может не иметь отношения)? Шлем? Вьюпорта окна спроецированного на шлем? А как обычное приложение получит все кроме разрешения окна?
vikarti
00.00.0000 00:00Легально по законам какой страны?
GDPR или там Российский закон о ПД или CCPA точно соблюдается на 100%?
А ложных детектов не бывает?
Или случаев когда пользователю сначала выписывается бан из-за того что у него в профиле прописано все честно но кто-то там решил что надо всех пользователей определенного пола или там определенного языка или локации оптом забанить а попытки пользователей это обойти — банятся детектами?(последний пример — я вот один сайт который так себя ведет — знаю, и кстати захожу туда в Brave(по другим причинам, не тем что в статье), с VPN, ну и в новом профиле теперь корректной информации… меньше. Да, кто-то скажет что нарушение правил и что действия (якобы) обоснованы а кто-то — что пусть с этими правилами лесом идут в данной ситуации. И сайтов с похожими проблемами — более одного).
b100d1e55
00.00.0000 00:00Не нашёл как включить первый пункт через настройки. Погугли в нашёл эту ссылку:
brave://adblock
BraveSoftware Автор
00.00.0000 00:00это больше про мобильные, на них фича должна включиться по умолчанию. У вас само не заработало?
Num
00.00.0000 00:00+1Очень круто! Как я вижу, Brave все еще остается самым приватным браузером на андроиде.
Правильно ли я понимаю, что когда хром перейдет на Blink на iOS, Брейв перейдет аналогичным образом?
BraveSoftware Автор
00.00.0000 00:00Спасибо!
Вопрос крайне болезненный, и ответа сейчас нет. Т.к. по факту это переписывание целиком всего текущего iOS браузера. В целом очень бы хотелось, дело в ресурсах.
Shado_vi
с пк и моб brave выдаёт уникальный канванс.
user-agent тоже крайне редкий.
BraveSoftware Автор
это сделано специально, см наши статьи https://habr.com/ru/company/brave/blog/587968/ и https://habr.com/ru/company/brave/blog/664052/
Отпечаток канваса будет разный у каждого сайта, таким образом его нельзя использовать для межсайтовой слежки.
User-agent это вымирающая технология, эта строка сейчас заморожена во всех браузерах, вместо неё будет Client Hints, которые мы в основном выключаем.