РосКомСвобода corporate blog
Firefox
Information Security
Google Chrome
Browsers
Comments 93
+13
Как я уже раньше говорил, я подозреваю, что это сочетание неприспособленности Camera API к механически выезжающим камерам и косяков в фирмвари производителя на стыке с этим самым API.
Производитель решил, что "этот вызов ОБЫЧНО используется для того чтобы (или прямо перед тем как) получить картинку — ну значит будем выдвигать камеру". Вероятно, это даже могло быть самым лучшим решением потому, что, например, выдвигание камеры на другом вызове могло бы заставлять пользователя ждать перед снимком пока камера выедет.
Это самое логичное объяснение учитывая, что браузеры должны спрашивать пользователя если код сайта хочет получить доступ к картинке с камеры, звуку, сенсорам движения, локации и прочему. И если он этого не делает (а не делают этого целых два браузера на разных движках) — скорее всего из JavaScript действительно запрашиваются только какие-то метаданные, которые не требуют разрешений.
+30

Мой внутренний параноик говорит, что он был бы рад, если бы разрешения запрашивались даже на получение метаданных :)

+4
Да, конечно. Однако тут нужно ещё соблюдать баланс между «запрашивать обо всём» и «не задолбать пользователя».
А вообще, если смотреть на разрешения на уровне Android, то к этому некоторое движение есть. Если вспомнить детализацию разрешений в Android 4-5 и текущих версиях — сейчас стало гораздо подробнее. На одно только использование стореджа минимум два разрешения есть.
Хотя не все проблемы решены. Например, всё ещё очень неочевидно для конечного пользователя выглядит запрос разрешений из группы «location» для того чтобы, скажем, подключиться по Bluetooth к чему-то или посканировать Wi-Fi сети.
0
неочевидно для конечного пользователя

Сканируя сети ПО может определить локацию пользователя в городе достаточно точно, по мне так все логично. Ну или добавлять еще одно разрешение.

+3
А теперь вспомните, кто такой конечный пользователь.
Для него это не очевидно.
Логично != Очевидно.

UPD: Чуть поясню.
Человек, который не понимает того как устроено API и система разрешений может из-за такого подумать, что вполне добросовестное приложение хочет за ним следить.
Я к тому, что здесь тоже есть поле для улучшений.
+3
У меня например именно поэтому как то знатно пригорело когда я хотел поиграться в Wi-Fi, а прилажуха стала спрашивать разрешения на геоданные. Паранойя и все такое…
+1

А тут палка о двух концах. SSID и вышки это более чем данные о местоположении. Раньше их можно было получать без разрешения о местоположении. Плохо. Теперь работа с WiFi явноттребует разрешение на местоположение. ИМХО намного лучше, хотя и не очевидно

+1

В этом и была идея — дать понять пользователю, что запускаемое приложение узнает его местоположение.
Видимые телефоном сети показывают его с довольно высокой точностью.

+2

Внутреннему параноику стоит поставить на телефон XPrivacyLua.

+1

Возможно, да, стоит.
Но суть поста была немного в другом :)

+7

Правда? А я в этом не уверен. Сегодня это скрипт гугла, совершенного безобидный и чисто случайно так жёстко обфусцированный. Сегодня это чья-то ошибка. Допустим. А что будет завтра? Думаете, имея возможность собирать отпечатки, подслушивать и подсматривать, все компании вдруг остановятся и скажут сами себе "не-ет, так не годится, что же мы в самом деле делаем, нельзя же так с пользователями поступать, срочно перестаём собирать приватные данные на всех, до кого можем дотянуться"? Ну вот и я так не думаю.


Суть этого поста может быть только в одном: спасение утопающих дело рук самих утопающих. Кто не защитит себя сам, того не защитит никто. Никакие законы и штрафы не остановят крупные компании вроде гугла (частично потому, что они сами лоббируют эти законы, частично потому, что законы везде разные, частично потому, что имея хороших юристов и регулярно совершая "технические ошибки" можно иметь глубоко в виду те законы, которые мешают им жить).

0
«не-ет, так не годится, что же мы в самом деле делаем
мне кажется, это уже из области фантастики.
+1
От всех функции слежки за нами ничего не спасёт.
Неоднократно замечал контекстную рекламу по поводу разговора рядом с телефоном на настольном компе.
Совсем свежая ситуация: сегодня ночью долго не мог уснуть, т.к. жена храпела и несколько раз пришлось её будить. В конце концов решил посмотреть новые сообщения по подписям в Ютубе, телефон с Андроидом (Samsung) лежал рядом, на тумбочке. Сразу, после запуска приложения Ютуба, получил контекстную рекламу — средство «Антихрап»!!! Пора на микрофон ставить механический выключатель, иначе — если нечаянно пукнуть около телефона — получим рекламу активированного угля! Нет, большой брат за нами не следит, это так, случайно совпало!
0

Хм, у нас на работе есть проект с QR-ридером, написанном в такие бородатые года, что даже в андроид-эмуляторе плашка "Вы можете двигать камеру клавиатурой" не статично горит, а мерцает примерно с частотой обновления экрана.


Интересно, насколько сильная дискотека будет, если её натравить на девайс с такой выдвижной камерой %)

+13

Банальный фингерпринтинг.


Так, метод navigator.mediaDevices.enumerateDevices() выдаёт список устройств (через промис), в которых указаны deviceId, что, как понимаете, для фингерпринтинга самое оно. Причём разрешения для работы метода не нужно. Возможно, камера слишком резво реагирует на этот или какой-то подобный метод (есть ещё устаревшие варианты).


В Сафари так не получится, в нём нужно вызвать getUserMedia(constraints), указывая что именно интересует (например, аудио, фронтальная или задняя камера). Браузер обязательно запросит разрешение (если нет запрета), и только потом даст доступ к устройству и его параметрам. По-другому вы на айфоне камеру не включите и ничего про её параметры не узнаете. Ну, а Гугл, это Гугл. Куда он без фингерпринтинга?


Для разработчиков могу только посоветовать подключать баннеры только в песочнице iframe без доступа к пользовательским девайсам.

+1
Известно какие штуки на iOS могут использоваться для отпечатка пользователя?
+3

Пару лет назад исследовал эту тему в контексте рекламного трекинга, и в айоси обычно была такая комбинация:
Со стороны браузера — юзер-агент (версия ОС, язык, примерный размер экрана)
Со стороны приложения после установки — версия ОС, язык, размер экрана, при наличии пермишенов геопозиция
В обоих случаях — часовой пояс, айпишник.
Со стороны приложения уже давно не прокатывает использовать какие-либо штуки типа мак-адресов (постоянно возвращается пустой), UDID (private API), не очень работает advertisingIdentifier (можно выключить или сбросить).

0

Это просто предположение или в указанном скрипте используется этот enumerateDevices?
Я что-то тоже не смог продраться через обфускацию гугла.

+3

Та даже хабр имеет столько трекалок, что уж говорить про другие сайты


Скриншот с фаерфокс превью

0

А это по умолчанию настройки Firefox или нет?
Мне просто интересно, блокируя google analytics и яндекс.метрику, они осознают, что роют себе могилу?


Вот есть типичный сайтик, который что-то продаёт или конструктор чего-либо. Выпускают они апдейт, который почему-то в продакшне сломался на Firefox. Тут команда аналитики видит в проде падение конверсий на конкретном браузере, смотрит в вебвизоре что пошло не так, фиксит.


Без аналитики никто не узнает, какого хрена там делают пользователи Firefox и что у них там отваливается и не работает. В сумме с небольшой рыночной долей браузера получится, что половина веба в итоге не будет на нём работать.

+2

Я уже не помню или это по дефолту, или вручную включил. И буду включать, потому что гуглу не доверяю.
П.С. на сайте должны быть контакты, чтобы пользователи сами могли жаловаться на неполадки. Сейчас куча метрик и я не собираюсь разрешать всем всё подряд

+1
Эта проблема уже давно существует, но не по этой причине. Из-за тотальной доминации Хрома и его клонов, очень многие чихать хотели на ФФ — с каждым годом вижу все больше сайтов, которые на нем работают немного не так. Их пока немного и проблемы обычно не критичные, но тенденция на лицо. Как и продолжающееся падение доли рынка с 15 до 9% за 2 года.
+1

Говорят, когда-то давно браузеры отправляли специальную строку User-Agent, чтобы сказать веб-серверу, что это за браузер, и веб-сервер мог понять, с каким браузером проблемы. К счастью, это всё ужасы прошлого. Все браузеры отправляют одно и то же фиксированное значение, нет никакого бардака, только порядок: о том, какими браузерам пользуются люди, можно узнать у Google.

+1
Вот есть типичный сайтик, который что-то продаёт или конструктор чего-либо. Выпускают они апдейт, который почему-то в продакшне сломался на Firefox. Тут команда аналитики видит в проде падение конверсий на конкретном браузере, смотрит в вебвизоре что пошло не так, фиксит.

Это так не работает. Обычно никто не замечает такие падения, зато бесплатно кормим гигантов персональными данными своих посетителей. Так что я у себя всё давно заблочил.
-1

Ну в моей практике работало. У кого не работает — надо качать команду аналитиков.


Это отлично, когда человек может заблочить всё, что ему хочется.
Плохо, когда заблокировано по умолчанию у всех. Но в FF не так, кстати, я проверил. Аналитика блокируется по умолчанию только в приватных окнах.

0

А зачем дебажить через аналитику, если для отлова ошибок есть Sentry?

0

Это она пока что есть, пока блокировщики в браузерах про неё не знают :) Сливает себе там данные безнаказанно.

0

При чем тут блокировщики, если сентри на сервере все эксепшены ловит?

0

Эмм, нет. Бэкендовые на сервере, фронтендовые на клиенте. Как иначе-то?

0

Выше уже указали про юзер агент, так что никакой аналитики на фронте не нужно. А для того, чтобы на firefox ничего не ломалось, надо проганять и на нем тесты. headless режим для селениума уже давным давно запилен

-1
Там в самом начале скрипта написано что это антиспам (детектор ботов, вероятно). Если вы расшифруете приложенный email — увидите что это botguard-contact@google.com.

Понятно что на заборе тоже написано, но в данном случае я склонен верить. Могли бы и не писать ничего совсем ведь.
0

конечно же мы расшифровали этот адрес.
Но как вы думаете, какова вероятность того, что письмо на него с вопросом "а вы не трекаете меня, случайно" получит какой-либо ответ? :)
// мы, вот, пока ждём, но уже не надеемся

+5

Да уже давно известно, что гуглокапчи «я не робот» пускают без капчи с обычными айпи-адресами только в том случае, если вас уже затрекали. Если нет (заблокировали), то извольте указать автобусы/светофоры/пешеходные переходы/замаскированных вьетнамцев на картинке.

0
У меня Oppo Reno 2F. Постоянно вижу это при поиске в ленте Инстаграма. Но в браузерах камера не выезжала еще (Android 9 с последними обновлениями безопасности). Камера не выезжает даже если дать Хрому на нее права. Возможно у юзера включена разблокировка по лицу и это как то влияет?
+1
Возможно ребята уже почистили, но попробуйте вот эту страницу — www.comss.ru/page.php?id=6726
При её открытии с телефона у меня выехала передняя камера. Блокировка по лицу отключена. На камеру, браузеру, права были даны. Я написал им в twitter, ответа не последовало.
0
Проверил, камера не выехала. Дал отдельно Хрому доступ к камере, тоже не выехала.
+18
У меня на Порнхабе uMatrix блочит в 10 раз меньше говна чем у вас на сайте. Это сейчас не шутка была.
+1
Эм… А то, что он не блочит на у казанном сайте, чем-то отличается от того, что блочит? Я зашёл — и вышел. Потому что в глазах пестрит.
+5

Мы в курсе, да :'(
Работаем над этой ситуацией.
Тут у нас столкновение интересов технарей (которые, как и вы, не любят лишнюю фигню, которая блокируется uMatrix'ом) и редакции, которым очень нужна аналитика.
Но переговоры ведутся и компромисс не за горами.

+1
Теперь у них название Matomo. mva очень советую оценить возможности Matomo для аналитики — проект полезный, заслуживает большей популярности.
+5
Вроде не так много и выглядит не сильно подозрительно:
Скрин
image
+1
На порнхабе сильная собственная аналитика. У них даже подключение сторонних скриптов завязано на порнхабовские объекты метрики и телеметрии (MGutils и другие). За что если честно им большой респект, почему-то им я доверяю больше чем гуглу. Видимо потому что у них весь бизнес на этих чувствительных данных построен.
+1
Так или иначе, но принцип «убедительного отрицания» работает. Никак не доказать, что это не простой косяк, а намеренный бэкдор.
+12

А всё-таки красиво это выглядит на видеоролике из статьи.
Зашёл на роскомсвободу, улыбнитесь, вспышка, вы в базе ;)

+1

Ну если такая база — БазаСвободныхЛюдей существует то это, вероятно, самый лёгкий способ в неё попасть ;)
Ну и членство, если так можно выразиться, в ней должно быть весьма почётно — можно на аватерке эдакий смайлик прикрутить желающим :)

+2

А потом приходят вежливые люди, изымают базу, и добавляют свободных людей в список распознаваемых лиц.


Так что лучше не надо.

+1
А как думаете вы?
Я бы попытался копнуть далее — пропустить трафик аппарата через прокси и отловить какими файликами и куда он пуляет.
0
И сравнить логи те что делает фронтальная камера при реальном фото, и при открытии подозреваемых страниц в браузере.
+1
Ну пуляет аппарат хэш фотки с камеры, как вы это поймете? Гаданием на хэшовой гуще?
0
Хэш? Тогда я вынужден переспросить с какой пользой можно воспользоваться им на «той» стороне?
0
Каюсь, хэш не самого снимка, и может вообще не хэш, а метаданные а-ля сколько людей/есть ли в кадре коты/т.п.
Общий посыл в том, что практически невозможно отловить передачу таких данных. А сами фотки, конечно, никто так воровать не будет — палевно и очень большой трафик тратился бы впустую => юзер мог бы заметить/просто подумать, мол ну нафиг ваш браузернейм, у меня вон соседнийбраузернейм трафика в 10 раз меньше жрет
0
Если я правильно понял его назначение, то он только для сравнения одной картинки в разных представлениях.
+2
У меня на компе с камерой и ноуте тоже Каспер иногда агрится на камеру, именно на браузер. В основном на Ютубе. Сама камера при этом не активируется, то есть лампочка не загорается. Возможно ноги оттуда же растут…
+20

Блин, с этими выезжающими камерами ж получается, что линукс не нужен теперь! Вместо пеки на линуксе с CD-приводом можно теперь мобильник использовать, чтобы кнопку перезагрузки на сервере с виндой нажимать! :)

+24

это старая шутка.
Соль её в том, что есть сервер на windows, который постоянно зависает, но ходить в серверную и перезагружать его — лень (а IPMI нету). Чтобы решить этот вопрос — рядом ставят сервер на Linux/BSD, который НЕ зависает, и делают скрипт, который выдвигает лоток CD-привода (а тот, в свою очередь через костыль нажимает на кнопку reset у вендового сервера.


bodqhrohro пошутил, что теперь для этого не нужен целый сервер на Linux (и вообще Linux), а можно использовать смартфон с выезжающей камерой.


Так-то!


// Всегда ваш, К.О.

+3

еще была история про «засыпающий» сервер на винде, у которого забыли пароль админа. поэтому написали скрипт, который раз в пол-часа выдвигал и задвигал сд-ром, к которому за хвост была привязана мышка. сервер видел активность мыши и не уходил в спящий режим.

+2
Какое же всё-таки оказалось ключевое изобретение человечества — привод CD-ROM!
+7
Была такая шутка — возле сервера стоит комп, который пингует сервер, если ответа нет — выезжает лоток CDROM и нажимает на reset.

А комментарии мне нужно обновлять…
+1
Владею таким же девайсом. Камера всегда выезжает с включенным светодиодом, потом он гаснет, а при отключении камеры светодиод снова включается, пока камера не заедет назад. На видео камера начинает заежать раньше, чем заканчивается «анимация» выезжающей камеры и начинается «анимация» заезжающей, и возникает такое моргание. Сама же камера включается, когда светодиод уже погас, и как только начинается заезд камеры она выключается. Видимо простой фингерпринт. В Аиде, при опросе девайса камера выезжает так же.
0
Хочешь приватности — езжай в село. Хотя какая и там приватность — все про всех все знают.

А если еще не серьезно. Не люблю всякие девайсы, которые могут работать от собственной батареи. Только системник, только хардкор. Форева!
0

Можно батарейку выковырять и сделать питание от розетки только. Будет высокотехнологичный проводной телефон :)

0

Что будет, кстати, если заклеить камеру, чтобы она не выезжала? Как на видеокассетах выломанную для защиты от записи заглушку опять заклеивали. Зависнет, сломается или проигнорирует?

0

Напомнило ещё, как на сайтах вставляли , заставляя старые браузеры внезапно шуршать дисководом. История по спирали развивается.

0

Упс, последние два комментария должны были в корень улететь, а подцепились тоже сюда. Зарепорчено.

0

Потыкал код и ссылки из поста и комментов, так и не воспроизвёл выезжание камеры ( Oppo Reno.

0
Почему нужно запускать модуль камеры, чтобы получить информацию о её возможностях (в каком нибудь общем виде для всех камер)? Разве нельзя это хранить где-то в устройстве в виде публичной информации и по API стучаться именно к этой информации?
+1
Как раз такой API и предоставляет HAL (Hardware Abstraction Layer) камеры на Android. Не могу сказать, баг / фича ли это дизайна самого API или просто в этом конкретном случае из-за специфического решения вендора получается так, что при открытии модуля камеры выезжает шторка. Учитывая то, что сам HAL оставляет многие детали реализации на откуп вендору, вполне может иметь место второй вариант.
0
Понятно. Получается HAL находится между аппаратным уровнем и программным. Но мы не можем получить доступ к нему без запуска модуля (в нашем случае камеры)?
0
Не возьмусь утверждать за все реализации HAL камеры, но на своих девайсах (девайсы на платформах Exynos4412, U8500) всегда замечал, что открытие HAL затрагивает драйвер в ядре. А поскольку система дергает модули камеры при запуске, иногда забагованный драйвер мог вызывать ребут при запуске.
+2

Ну да, "мы вас тут потрекаем немного, просто чтобы определить что вы не бот. И не важно, что вы сейчас не на форме создания аккаунта, а просто смотрите на рандомном сайте в интернете котиков во встроенном видео с ютуба"

-1
Скорее минифицированный, чем обфусцированный код.
+1

Одно другому, на самом деле, не мешает
// и немного сарказма: а eval() там, значит, для красоты, да? :)

+1

В iPhone есть такая фишка, что если при включённом фонарике зайти в камеру, то фонарик выключится. Таким способом на мой взгляд, может отслеживать в какой момент приложения используют камеру. Например сейчас обнаружил, что при открытие приложения Тинькофф, фонарик гаснет, если в настройках отключить разрешение для камеры, то фонарик при входе в приложение остаётся гореть.

+1

Ну, банковские приложения вообще как только не трекают, оправдывая это тем, что им нужно однозначно удостовериться, что операцию проводит настоящий клиент.
Только вот если бы потом они не торговали этой бигдатой, и не утекала бы она в неизвестном направлении…
// косой взгляд в сторону зелёного банка

+2
Вчера ради эксперимента на телефоне с чистым Андроид 9 убрал у Google Services разрешение на доступ к камере. Теперь ошибка Google Services вылетает при приходе каждой SMS. Тоже фингерпринтинг?
0
Автор осторожен, да…
И в самом деле, негоже если скрипт в браузере способен творить непотребное бесчинство.
Наверняка это обыкновенный недочёт.
Нет причин полагать обратное.
Only those users with full accounts are able to leave comments.  , please.