TikTok, X и Meta собирают данные о пользователях iOS через push‑уведомления
Компания Apple уже давно заявила, что фингерпринтинг — отслеживание пользователя по техническим и программным характеристикам устройства — запрещён. Однако некоторые популярные приложения нашли обходной путь, которым с удовольствием пользуются.
Специалист по кибербезопасности Томми Миск (Tommy Mysk) обнаружил, что популярные приложения для iOS используют функцию push‑уведомлений, чтобы отправлять подробные данные об устройстве пользователя на серверы своих компаний.
Миск обратил внимание на эту настораживающую схему, изучив несколько приложений социальных сетей, включая TikTok, Facebook, Facebook Messenger, Instagram, Threads и X. Все эти приложения использовали функцию, благодаря которой они могли настраивать свои push‑уведомления, даже когда само приложение не запущено.
Функция появилась в 2016 году, и сама по себе она безопасна и даже полезна. Некоторым приложениям она нужна для расшифровки важных данных из уведомлений или для загрузки дополнительных материалов, чтобы уведомление отображалось корректно. Когда приложение получает push‑уведомление, iOS даёт ему команду проснуться и начать работу. В этот момент приложение может делать всё, что захочет разработчик, в том числе и настраивать внешний вид push-уведомлений — такова изначальная задача функции. Проблема в том, что «проснувшееся» приложение может также собирать данные и отправлять информацию о пользователе.
Миск заметил, что приложения социальных сетей научились использовать эту лазейку и могут собирать данные с устройства и отправлять их на удалённые серверы. Возможность запуска кода в фоновом режиме исследователь назвал «золотой жилой для приложений, которые охотятся за данными».
Как это работает по мнению Миска?
- Разработчик приложения пишет код, который хочет запустить в фоновом режиме
- Разработчик отправляет push‑уведомление пользователю приложения. Тема может быть любой: от новостей или результатов матча до запроса на добавления в друзья
- Устройство пользователя получает push‑уведомление, но пока не показывает его на экране. iOS распознаёт, что уведомление пришло от приложения социальной сети, и запускает его в фоновом режиме. Приложение запущено, но пользователь пока не видит уведомление и не может с ним взаимодействовать
- Приложение запускает код, который разработчик подготовил для работы в фоновом режиме. Это может быть вполне безобидный код, который, например, добавляет информацию в уведомление. А может быть такой код, который собирает данные с устройства пользователя и отправляет их на серверы разработчика
В итоге разработчики могут получить уникальную комбинацию программных и технических характеристик устройства пользователя.
Миск отметил, что многие приложения используют эту функцию, чтобы отправлять подробную информацию об устройстве, тихо работая в фоновом режиме. Время работы системы, местоположение, язык клавиатуры, доступная память, состояние батареи, модель устройства, яркость дисплея и другие данные могут отправиться на серверы компании-разработчика, а позже — применяться для отслеживания пользователя в разных приложениях.
Какие данные собираются?
В видео с примерами такого обмана Миск показывает типы данных, которые таким образом могут собирать компании — либо через собственные сервисы, либо с помощью сторонних инструментов, таких как Google Analytics и Firebase.
В примере с TikTok видно, что приложение отправляет на удалённые серверы информацию о времени загрузки iPhone каждый раз, когда получает push-уведомление.
То есть TikTok точно знает, когда пользователь в последний раз перезагружал свой iPhone. Если собирать данные в течение определённого периода времени, можно узнать, как часто пользователь перезагружает iPhone, а уже из этой информации понять, насколько часто iPhone используется и насколько стабильно работает. Ещё эти данные можно использовать для идентификации устройства или отслеживания его активности.
Когда приложение Facebook отправляет push-уведомление на то же устройство, Facebook получает те же данные о времени последней загрузки iPhone.
Как отмечает исследователь, наличие этих данных облегчит отслеживание пользователя в различных приложениях. А всё потому, что время загрузки может служить уникальным идентификатором устройства.
Если на одном устройстве установлено несколько приложений, которые собирают и отправляют данные о времени загрузки на один и тот же или разные серверы, они могут сравнить информацию и связать её с одним конкретным устройством. Приложения могут отслеживать поведение и предпочтения пользователя, даже если для входа в каждое приложение используются разные аккаунты.
Таким образом, приложения социальных сетей превращают функцию push-уведомлений в незапрещённую законом угрозу конфиденциальности.
Миск отмечает, что некоторые приложения, например Facebook и TikTok, также отправляют данные при удалении уведомлений из Центра уведомлений iOS.
Когда пользователь удаляет уведомление Facebook, приложение отправляет запрос с подробной информацией, включая данные о свободной памяти, последнем событии приложения — например, поставленный лайк — и времени с момента последнего события приложения, личном идентификаторе, который определяет аккаунт пользователя на Facebook, предпочтительном размере контента, временной метке (то есть точной дате и времени), когда уведомление было удалено, и типе соединения.
Twitter (X) работает со сбором информации о пользователе примерно так же, как Facebook и TikTok. Все три компании используют Firebase — сервис от Google.
Миск отмечает, что частота, с которой многие приложения отправляют информацию об устройстве после получения уведомления, просто поражает воображение.
Новые правила Apple для разработчиков: что они изменят?
Миск возлагает большие надежды на новые правила Apple для разработчиков, которые вступят в силу весной этого года. Разработчикам придётся объяснять, почему их приложения используют определённые API, которые представляют собой методы общения и обмена данными между различными приложениями.
Ещё разработчики должны будут объяснить, для чего им нужен доступ к информации об устройстве не только для собственного кода, но и для сторонних SDK (наборов для разработки программного обеспечения), которые они добавляют в свои приложения. И приложения, и сторонние SDK должны будут указывать «разрешённые причины», по которым им необходим доступ к информации об устройстве через определённые API. Эти причины должны «соответствовать функциональности приложения», и разработчики должны описать их в отдельных документах — «файлах манифеста конфиденциальности». В августе мы писали подробный обзор нового требования Apple к разработчикам — почитать можно здесь.
Смогут ли новые правила помешать компаниям собирать данные через лазейку в push‑уведомлениях? Только в том случае, если Apple будет серьёзно следить за соблюдением этих правил, чего никто не может гарантировать.
Мы считаем, что новые правила улучшат ситуацию, только непонятно, насколько. Разработчикам придётся учитывать эти правила, и есть шанс, что они будут добросовестно им следовать. Однако те, кто твёрдо намерен и дальше уловками собирать данные, скорее всего, пойдут на риск. И тогда Apple и её рецензентам придется ловить эти приложения с поличным.
Надеемся, что Apple будет придерживаться активного и прозрачного подхода к обеспечению конфиденциальности, иначе данные пользователей так и останутся под угрозой.