Конфиденциальность iOS: Instagram* и Facebook* могут отслеживать всю вашу активность в браузере внутри приложения

Специальный корреспондент
Собака

Собака

Пресс-служба
Команда форума
Private Club
Регистрация
13/10/15
Сообщения
54.789
Репутация
62.390
Реакции
276.952
RUB
0
8bf7d17d0d94a206e4f8e1075f1d5d3a.png

Приложение Instagram* и Facebook* для iOS отображает все сторонние ссылки и рекламу в своем приложении с помощью собственного встроенного браузера. Это создает различные риски для пользователя, поскольку хост-приложение может отслеживать каждое взаимодействие с внешними веб-сайтами, от всех данных формы, таких как пароли и адреса, вплоть до каждого нажатия.

Чтобы упростить пост, будет использоваться термин «Instagram*» вместо «Meta*» или «Facebook*».

[H2]Что делает Инстаграм*?[/H2]
  • Ссылки на внешние веб-сайты отображаются внутри приложения Instagram*, вместо того чтобы использовать встроенный Safari.
  • Это позволяет Instagram* отслеживать все, что происходит на внешних веб-сайтах, без согласия пользователя или поставщика веб-сайта.
  • Приложение Instagram* внедряет свой в каждый показанный сайт, в том числе при нажатии на рекламу, что позволяет отслеживать все действия пользователя, такие как нажатие каждой кнопки и ссылки, выделение текста, скриншоты, а также любые вводимые формы, такие как пароли, адреса и номера кредитных карт.
[H2]Почему это так важно?[/H2]
Apple активно работает против такого рода отслеживания:

  • Начиная с iOS 14.5 дает пользователю возможность контролировать ситуацию:
  • Приложения должны получить разрешение пользователя, прежде чем отслеживать его данные в приложениях, принадлежащих другим компаниям.
  • Safari уже по умолчанию.
  • Google Chrome скоро откажется от сторонних файлов cookie.
  • Firefox только что объявил о внедрении по умолчанию для предотвращения любого межстраничного отслеживания.
  • Некоторые интернет-провайдеры раньше на все веб-сайты, однако они могли делать это только для незашифрованных страниц. С по умолчанию это больше не вариант. Подход, который использует приложение Instagram* & Facebook*, работает для любого сайта, независимо от того, зашифрован он или нет.
Instagram* намеренно работает над системой разрешений App Tracking Transparency, которая была разработана для предотвращения именно этого типа сбора данных. После его представления Meta* объявила:

Простое предупреждение Apple об iPhone обходится Facebook* в 10 миллиардов долларов в год
Facebook* пожаловался, что Apple App Tracking Transparency отдает предпочтение таким компаниям, как Google, потому что App Tracking Transparency «вырезает браузеры из подсказок отслеживания, которые Apple требует для приложений».
Веб-сайты, которые вы посещаете на iOS, не вызывают запросы на отслеживание, поскольку встроены функции защиты от отслеживания.
и .

С 1 миллиардом активных пользователей Instagram* количество данных, которые Instagram* может собирать, вводя код отслеживания на каждый сторонний веб-сайт, открытый из приложения Instagram* и Facebook*, является ошеломляющим. Поскольку веб-браузеры и iOS добавляют в руки пользователя все больше и больше средств управления конфиденциальностью, становится ясно, почему Instagram* заинтересован в мониторинге всего веб-трафика внешних веб-сайтов.

Facebook* атаковал своих пользователей сообщениями, умоляя их снова включить отслеживание. Он угрожал антимонопольным иском против Apple. Это заставило малые предприятия защищать отслеживание пользователей, утверждая, что когда гигантская корпорация шпионит за миллиардами людей, это форма развития малого бизнеса.


[H3]FAQs для тех, кто не является разработчиками[/H3]
  • Может ли Instagram*/Facebook* читать все, что я делаю в Интернете? Нет! Instagram* может читать и просматривать ваши действия в Интернете только тогда, когда вы открываете ссылку или рекламу в своих приложениях.
  • Действительно ли Facebook* крадет мои пароли, адреса и номера кредитных карт? Нет! Я не собрал все данные, которые отслеживает Instagram*, но хотел продемонстрировать, какие данные они могут получить без вашего ведома. Как было показано в прошлом, если компания может получить доступ к данным бесплатно, не спрашивая разрешения у пользователя, она будет отслеживать это.
  • Как я могу защитить себя? Для получения полной информации прокрутите статью до конца. Резюме: всякий раз, когда вы открываете ссылку из Instagram* (или Facebook*, или Messenger), не забудьте щелкнуть точки в углу, чтобы вместо этого открыть страницу в Safari.
  • Инстаграм* делает это намеренно? Я не могу сказать, как решения принимались внутри. Все, что я могу сказать, это то, что создание вашего собственного браузера в приложении требует нетривиального времени для программирования и обслуживания, значительно больше, чем просто использование конфиденциальности и удобной альтернативы, которая уже была встроена в iPhone за последние 7 лет.
[HR=2][/HR]
[H4]Meta* Pixel[/H4]
Внешний файл JavaScript, который внедряет приложение Instagram* (pcm.js в документации), представляет собой метапиксель, а также некоторый код для создания моста для связи с хост-приложением. Это не просто пиксель/изображение, а реальный код JavaScript, который выполняется:

Meta* Pixel — это фрагмент кода JavaScript, который позволяет отслеживать действия посетителей на вашем сайте. Он работает, загружая небольшую библиотеку функций, которую вы можете использовать всякий раз, когда посетитель сайта совершает действие, которое вы хотите отслеживать […]
Meta* Pixel может собирать следующие данные: […]
Данные о нажатиях кнопок — включают все кнопки, нажатые посетителями сайта, метки этих кнопок и любые страницы, посещенные в результате нажатия кнопок.
Названия полей формы — включает имена полей веб-сайта, такие как электронная почта, адрес, количество и т. д., когда вы покупаете продукт или услугу. Мы не фиксируем значения полей, если вы не включите их как часть расширенного сопоставления или необязательных значений.
документация разработчиков (Июнь 2022)

«Meta* pixel позволяет отслеживать активность посетителей на вашем веб-сайте». Вот в чем проблема: поставщик веб-сайта совершенно нормально решает внедрить meta* pixel для отслеживания активности посетителей. Однако в данном случае оператор веб-сайта не давал согласия на установку Meta* Pixel. Кроме того, у провайдера веб-сайта даже нет возможности отказаться.

[H2]Дисклеймер[/H2]
У меня нет списка точных данных, которые Instagram* собирает. У меня есть доказательства того, что приложения Instagram* и Facebook* активно запускают команды JavaScript для внедрения дополнительного JS SDK без согласия пользователя, а также отслеживают выбор текста пользователем. Если Instagram* уже делает это, они также могут внедрить любой другой код JS. Само приложение Instagram* хорошо защищено от атак «human-in-the-middle», и только изменив двоичный файл Android, удалив привязку сертификата и запустив его в симуляторе, я смог проверить часть его веб-трафика.

4dd6421c90024752f32df2452f839b7c.png

Даже тогда большая часть фактических данных имела еще один уровень шифрования/сжатия. Понятно, что они действительно не хотят, чтобы вы исследовали, какие данные отправляются обратно в API. Я решил не тратить на это больше времени.

[HR=2][/HR]
В целом цель этого проекта заключалась не в том, чтобы получить точный список данных, которые собираются, а в том, чтобы выделить проблемы с конфиденциальностью и безопасностью, вызванные использованием браузеров в приложениях, а также доказать, что такие приложения, как Instagram* уже используют эту лазейку.

Подводя итог рискам и недостаткам встроенных браузеров в приложениях:

  • Конфиденциальность и аналитика: Хост-приложение может отслеживать буквально все, что происходит на веб-сайте, каждое касание, ввод данных, поведение при прокрутке, какой контент копируется и вставляется, а также отображаемые данные, такие как онлайн-покупки.
  • Кража учетных данных пользователя: физических адресов, ключей API и т. д.
  • Реклама и рефералы: Хост-приложение может размещать рекламу на веб-сайте или заменять ключ API рекламы, чтобы украсть доход от хост-приложения, или заменять все URL-адреса, чтобы включить ваш реферальный код ( ).
  • Безопасность: браузеры потратили годы на оптимизацию безопасности UX в Интернете, например, показ статуса шифрования HTTP, предупреждение пользователя о схематичных или незашифрованных веб-сайтах и многое другое.
  • Внедрение дополнительного кода JavaScript на сторонний веб-сайт может вызвать проблемы и сбои, что может привести к поломке веб-сайта.
  • Пользовательские расширения браузера и блокираторы контента недоступны.
  • Диплинки не работают в большинстве случаев.
  • Часто нет простого способа поделиться ссылкой через другие платформы (например, через электронную почту, AirDrop и т. д.).
Браузер в приложении Instagram* поддерживает автоматическое заполнение вашего адреса и платежной информации. Однако нет никаких законных причин для его существования, поскольку все это уже встроено в операционную систему или сам веб-браузер.

[H2]Тестирование различных приложений[/H2]
Instagram* iOS
1bbc94f304caa93564714fedcff0dcf5.png


Messenger iOS
4b8fc97710b1a0bc546d750684e7e18d.png


Facebook* iOS
600adb8b68e3b25eb870bb5829eaadef.png


Instagram* Android
ec1fb9df47a694895ce0d39ef8acc10d.png


WhatsApp по умолчанию открывает iOS Safari, поэтому там проблем нет.

[H2]Как это работает[/H2]
Насколько мне известно, нет хорошего способа отслеживать все команды JavaScript, которые выполняются хост-приложением iOS ( ). Я создал новый простой файл HTML с некоторым кодом JS, чтобы переопределить часть документа. методы:

Я создал новый простой файл HTML с некоторым кодом JS, чтобы переопределить часть документа. методы:

Код:
 document.getElementById = function(a, b) {    appendCommand('document.getElementById("' + a + '")')    return originalGetElementById.apply(this, arguments); }
Открытие этого HTML-файла из приложения Instagram* для iOS дало следующее:

Instagram* iOS
464bd34eae271f577668eea707c8b0f1.png


Сравнивая это с тем, что происходит при использовании обычного браузера или, в данном случае, Telegram, который использует рекомендуемый :

Сравнение с Telegram
48de11c38c74b44e69b6e2f629279b72.png


Как видите, обычный браузер или SFSafariViewController не запускает JS-код. SFSafariViewController — это отличный способ для разработчиков приложений показывать сторонний веб-контент пользователю, не выходя из приложения, сохраняя при этом конфиденциальность и удобство для пользователя.

[H2]Технические подробности[/H2]
818640103c614bd5883f8d3f302988fb.png

  • Instagram* добавляет новый listener, чтобы получать подробную информацию о каждом выборе пользователем любого текста на веб-сайте. Это, в сочетании с отслеживанием скриншотов, дает Instagram* полное представление о том, какая конкретная информация была выбрана и передана.
  • Приложение Instagram* проверяет, есть ли элемент с идентификатором iab-pcm-sdk: на удивление, я нашел очень мало информации об этом в Интернете. По сути, это кроссплатформенный SDK для отслеживания, предоставленный , однако я недостаточно знаю об отношениях между Instagram* и IAB Tech Lab (например, ).
  • Если элемент с идентификатором iab-pcm-sdk не найден, Instagram* создает новый элемент скрипта, устанавливает его источник на pcm.js, который является исходным кодом для Meta* pixel.
  • Затем он находит первый элемент сценария на вашем сайте для вставки Meta* Pixel прямо перед ним, внедряя Meta* Pixel на ваш сайт.
  • Instagram* также запрашивает iframe на вашем веб-сайте, однако я не смог найти никаких указаний на то, что они с ним делают.
[H2]Как защитить себя как пользователя?[/H2]
  • Избегайте in-app-webview. В большинстве встроенных в приложение браузеров есть способ открыть отображаемый в данный момент веб-сайт в Safari. Как только вы попадете на этот экран, просто используйте эту опцию, чтобы выйти из него. Если эта кнопка недоступна, вам придется скопировать и вставить URL-адрес, чтобы открыть ссылку в браузере по вашему выбору.
  • Используйте веб-версию. Большинство социальных сетей, включая Instagram* и Facebook*, предлагают достойную мобильную веб-версию с аналогичным набором функций. Вы можете без проблем использовать приложение в iOS Safari.
[H2]Как защитить себя как провайдеру веб-сайта?[/H2]
Пока Instagram* не решит эту проблему (если вообще когда-либо), вы можете довольно легко обмануть приложения Instagram* и Facebook*, чтобы они поверили, что код отслеживания уже установлен. Просто добавьте в свой HTML-код следующее:

Код:
 <span id="iab-pcm-sdk"></span> <span id="iab-autofill-sdk"></span>
Кроме того, чтобы Instagram* не отслеживал выбор текста пользователем на вашем веб-сайте:

Код:
 const originalEventListener = document.addEventListener document.addEventListener = function(a, b) {    if (b.toString().indexOf("messageHandlers.fb_getSelection") > -1) {        return null;    }    return originalEventListener.apply(this, arguments); }
Это не решит настоящую проблему, связанную с тем, что Instagram* запускает код JavaScript на вашем веб-сайте, но, по крайней мере, не будут внедряться дополнительные сценарии JS, а также будет отслеживаться меньше данных.

Приложению также легко определить, является ли текущий браузер приложением Instagram*/Facebook*, проверив user agent, однако я не смог найти хороший способ автоматически выйти из браузера в приложении, чтобы вместо этого открыть Safari. Если вы знаете решение, я .

[H2]Предложения[/H2]
[H2]Для Apple[/H2]
Apple проделывает фантастическую работу, создавая свою платформу с учетом конфиденциальности пользователей. Один из 4 принципов конфиденциальности:

Прозрачность и контроль пользователей. Убедитесь, что пользователи знают, какие данные передаются и как они используются, и что они могут контролировать их.
(Апрель 2021).

На момент написания статьи не существовало правила проверки AppStore, которое запрещало бы компаниям создавать собственные браузеры в приложениях для отслеживания пользователей, чтения их входных данных и размещения дополнительной рекламы на сторонних веб-сайтах. Однако Apple явно рекомендует использовать SFSafariViewController:

Избегайте использования web view для создания веб-браузера. Использование web view, позволяющего людям ненадолго получить доступ к веб-сайту, не выходя из контекста вашего приложения, — это нормально, но Safari — это основной способ просмотра веб-страниц. Попытка воспроизвести функциональность Safari в вашем приложении не нужна и не рекомендуется.
(Июнь 2022).

Если ваше приложение позволяет пользователям просматривать веб-сайты из любой точки Интернета, используйте класс SFSafariViewController. Если ваше приложение настраивает, взаимодействует или управляет отображением веб-контента, используйте класс WKWebView.
(Июнь 2022)

Внедрение App-Bound Domains

- это новая замечательная функция WebKit, позволяющая разработчикам обеспечить более безопасный просмотр веб-страниц в приложении при использовании WKWebView. Как разработчик приложения, вы можете определить, к каким доменам может получить доступ ваше приложение, и все веб-запросы будут ограничены ими. Чтобы отключить защиту, пользователь должен будет явно отключить ее в настройках приложения iOS.

Функция App-Bound Domains появилась в iOS 14 (~1,5 года назад), однако разработчики могут использовать ее только по желанию, что означает, что подавляющее большинство приложений для iOS не используют эту функцию.

Если разработчики SocialApp хотят улучшить конфиденциальность пользователей, у них есть два пути:
Использовать SafariViewController вместо WKWebView для просмотра внутри приложения. SafariViewController защищает данные пользователя от SocialApp, загружая страницы вне пространства процессов SocialApp. Используя SafariViewController, SocialApp может гарантировать своим пользователям наилучший доступный опыт конфиденциальности.

Согласие на App-Bound Domains. Дополнительные ограничения WKWebView от App-Bound Domains гарантируют, что SocialApp не сможет отслеживать пользователей с помощью API, описанных выше.
Я выделил часть "хотят улучшить конфиденциальность пользователей", так как это недостающая часть: App-Bound Domains должны быть обязательным требованием для всех приложений iOS, поскольку именно приложения социальных сетей внедряют код отслеживания.

В июле 2022 года Apple представила , чтобы лучше защитить людей, подверженных высокому риску. К сожалению, режим блокировки iOS не меняет способ работы веб-просмотров в приложении. Я подал радар в Apple: , на что Apple ответила: "Режим блокировки не для этого".

Ответ Apple
Ответ Apple
[H2]Несколько срочных шагов, которые необходимо предпринять компании Apple[/H2]
Обновите правила проверки приложений, чтобы потребовать использования SFSafariViewController или App-Bound Domains при отображении любых сторонних веб-сайтов.

  • Должно быть только несколько исключений (например, браузерные приложения), которые требуют двух дополнительных шагов: запросить дополнительное разрешение, чтобы убедиться, что это корректный случай использования, а также пользователь должен подтвердить это дополнительное разрешение.
  • Сторонние веб-сайты/контент по-прежнему могут отображаться с помощью класса WKWebView, так как они часто используются для элементов пользовательского интерфейса, или приложение фактически изменяет свой сторонний контент (например, автоматическое отключение собственных баннеров cookie).
    Я также отправил радар ( ) в Apple в рамках моей прошлой .
[H2]Для Meta*[/H2]
Сделайте то, что Meta* уже делает с WhatsApp: Прекратите модифицировать сторонние сайты и используйте Safari или SFSafariViewController для всех сторонних сайтов. Так будет лучше для пользователя, и так будет правильно.

Я сообщил об этой проблеме через Bug Bounty Program, где в течение нескольких часов они подтвердили, что смогли воспроизвести "проблему", однако за последние 9 недель я больше ничего не услышал, кроме просьбы подождать, пока они не подготовят полный отчет. Поскольку на мои последующие вопросы не последовало никаких ответов, и они не перестали внедрять код отслеживания на внешние сайты, я решил обнародовать эту информацию (предупредив их еще за 2 недели).

Ознакомьтесь с , касающимися конфиденциальности и безопасности.

*Meta признана в России экстремистской организацией, деятельность ее сервисов Facebook и Instagram в стране запрещена.

*Facebook и Instagram продукты компании Meta, которая признана в России экстремистской организацией, деятельность ее сервисов Facebook и Instagram в стране запрещена.


[HR=2][/HR]















 
Я уверен они всегда следят и следили, ничего особенно нового. Но за подробную статью спасибо
 
Сверху Снизу