Как проверить, что трекают приложения на сторонних сайтах
Некоторые приложения, например Instagram и Facebook, внедряют код JavaScript на сторонние веб-сайты. Это происходит, когда вы открываете ссылки через встроенный в приложение браузер, и создает потенциальную угрозу безопасности и конфиденциальности для пользователя.
Чтобы понять, трекают ли вас приложение в браузере, используйте InAppBrowser — этот инструмент выводит список команд JavaScript, которые выполняет приложение iOS, когда отображает страницу. InAppBrowser не может обнаружить все выполняемые команды JavaScript и не показывает, отслеживает ли приложение что-то с помощью собственного кода. Кроме того, приложения могут скрывать свои действия JavaScript от этого инструмента (подсказка: Начиная с iOS 14.3 (декабрь 2020) Apple представила поддержку выполнения кода JavaScript. Команды JavaScript, выполненные с использованием этого подхода, могут по-прежнему иметь полный доступ к стороннему веб-сайту, но не могут быть обнаружены самим веб-сайтом, в том числе инструментом InAppBrowser.com).
Исходный код приложения есть на GitHub.
Как использовать InAppBrowser для любого приложения на iOS
- Откройте приложение, которое хотите проанализировать.
- Поделитесь URL-адресом https://InAppBrowser.com где-нибудь внутри приложения (например, отправьте личное сообщение другу или опубликуйте в своей ленте).
- Нажмите на ссылку внутри приложения.
- Прочитайте отчет на экране.
Так Краузе проанализировал самые популярные приложения для iOS, у которых есть собственный встроенный браузер. В анализе не участвовали сторонние для iOS браузеры (Chrome, Brave и т. д.), потому что они используют JavaScript для менеджера паролей и других функций.
На что обращал внимание автор анализа
- Возможность открытия в браузере по умолчанию: есть ли в приложении кнопка для открытия ссылки не в строенном, а в стороннем браузере;
- Возможность изменить страницу: добавляет ли приложение код на сторонние веб-сайты, чтобы менять содержимое? Этот пункт включает добавление кода отслеживания (например, отслеживание ввода, выделения текста, касания), внедрение внешних файлов JavaScript и создание новых элементов HTML.
- Получение метаданных: запускает ли приложение код JavaScript для получения метаданных веб-сайта. Автор считает, что этот пункт не нарушает конфиденциальность пользователя, но не объясняет, почему все равно решил оставить его в анализе.
- Ссылка на код JavaScript, который удалось обнаружить. Код может быть не на 100% точным представлением всех команд JS.
TikTok отслеживает все вводы на клавиатуре
Результаты смотрите в таблице (ссылки кликабельны).
Приложение | Можно ли перейти через сторонний браузер | Изменяет ли приложение страницу | Получает ли приложение метаданные | Удалось ли обнаружить код JS |
TikTok | Нет | Да | Да | Да |
Да | Да | Да | Да | |
FB Messenger | Да | Да | Да | Да |
Да | Да | Да | Да | |
Amazon | Да | Нет | Да | Да |
Snapchat | Да | Нет | Нет |
Нет |
Когда вы кликаете любую ссылку в приложении TikTok для iOS, она открывается в браузере приложения. Пока вы взаимодействуете с сайтом, TikTok подписывается на все вводы с клавиатуры (включая пароли, информацию о кредитной карте и другие конфиденциальные данные) и каждое нажатие на экран, например, на кнопку, ссылку или изображение. Мы не знаем, как это использует TikTok, но с технической точки зрения это равносильно установке кейлоггера на сторонних сайтах.
Полный список всех команд JavaScript еще больше.
Компания подтвердила, что эти функции в коде есть, но уверяла, что TikTok использует их «для отладки, устранения неполадок и мониторинга производительности. Например, для проверки скорости загрузки страницы или ее сбоя».
Instagram и Facebook следят за пользователями через встроенный браузер
Известно, что Meta внедряет pcm.js скрипт на сторонние веб-сайты. Бывший инженер Google Феликс Краузе провел исследование и заявил, что Instagram и Facebook добавляют код отслеживания на сайты, которые пользователи открывают через встроенный браузер, и получают информацию о нажатиях всех кнопок и ссылок, выборе текста, снимках экрана, паролях, адресах и номерах карт. Представитель компании ответил в Twitter, что это заявление Краузе искажает принцип работы встроенного браузера, а Meta уважает конфиденциальность пользователей и собирает только размещенные пользователем данные.
Но мы точно знаем, что Instagram:
- Подписывается на каждое нажатие любой кнопки, ссылки, изображения или другого элемента на внешних веб-сайтах, отображаемых в приложении Instagram.
- Подписывается каждый раз, когда пользователь выбирает элемент пользовательского интерфейса (например, текстовое поле) на сторонних веб-сайтах, отображаемых в приложении Instagram.
Тут можно посмотреть полный список команд.
И что мне с этим делать?
- Выбирайте функцию «Открыть в браузере» — тогда вы не будете использовать встроенные браузеры приложений и они не будут отслеживать ваши действия на других сайтах.
- Если такой кнопки нет, скопируйте URL и откройте через браузер. Например, в TikTok нет кнопки для открытия веб-сайтов в браузере по умолчанию
- Если вы работаете в компании, где у вас есть встроенный браузер, используйте его только для своих собственных страниц и открывайте все внешние ссылки в браузере пользователя по умолчанию.
Q&A для гуманитариев
- Могут ли встроенные в приложения браузеры читать все, что я делаю в интернете? Да, если вы просматриваете их браузер в приложении, технически это возможно.
- Действительно ли вышеперечисленные приложения крадут мои пароли, адреса и номера кредитных карт? Нет. Автор хотел продемонстрировать, что злоумышленники могут получить доступ к этим данным с помощью такого подхода. Если компания может получить доступ к данным на законных основаниях и бесплатно, не спрашивая разрешения у пользователя, она будет отслеживать его действия.
- Как я могу защитить себя? Всякий раз, когда вы открываете ссылку из любого приложения, посмотрите, предлагает ли приложение открыть ее в браузере по умолчанию. Во время анализа каждое приложение, кроме TikTok, предлагало такой вариант.
- Компании делают это намеренно? Создание собственного встроенного в приложение браузера требует значительно больше времени для программирования и обслуживания, чем просто использование конфиденциальной и удобной альтернативы, которая уже была встроена в iPhone за последние семь лет. Скорее всего, у компании есть мотивация отслеживать ваши действия на этих сайтах.
- Я открыл InAppBrowser.com внутри приложения, и оно не показывает никаких команд. Я в безопасности? Нет. Прежде всего, веб-сайт проверяет только один из многих сотен векторов атаки: внедрение JavaScript из самого приложения. Но разработчики приложений могут полностью скрывать выполняемые команды JavaScript, поэтому у нас нет возможности проверить, что на самом деле происходит под капотом.