Прицел на личные данные. Что мобильная реклама может разузнать о пользователе Android

В Google Play приложений, которые будут тебе показывать рекламу, больше 40%. Так что если у тебя смартфон на Android и ты пользуешься мобильными приложениями, то, скорее всего, ты понимаешь, о чем речь. Используя такие приложения, ты запускаешь встроенный в них AdSDK, который подгружает со своего сервера рекламные объявления. И чаще всего это объявления MRAID, которые через JavaScript обращаются к нативным функциям твоего смартфона: например, при помощи mraid.storePicture() кешируют картинки во внешнем хранилище. Звучит небезопасно, правда?

Бизнес-логика AdSDK часто непрозрачна для разработчика, который встраивает его в свое мобильное приложение. Программный код AdSDK работает с теми же привилегиями, что и приложение-носитель. Если носителю какие-то специальные разрешения не нужны, но они нужны AdSDK — носителю придется запросить их. Любой уважающий себя AdSDK затребует от тебя доступ к ID смартфона и геолокации, чтобы показывать тебе релевантные объявления.

AdSDK-провайдеры вынуждены мириться с небезопасностью по многим причинам. Несколько самых очевидных:

  • между рекламодателем и твоим смартфоном может быть непредсказуемое число промежуточных звеньев;
  • объявления для показа выбираются динамически;
  • на сегодняшний день не существует инструментов для гарантированной дезинфекции JS-кода.

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

  1. AdSDK помещает программный код каждого объявления в изолированный экземпляр встроенного браузера WebView и ограничивает набор разрешений, которыми этот экземпляр может пользоваться.
  2. Доступ программного кода объявления к внешнему миру, в частности к локальным файлам внешнего хранилища твоего смартфона, регламентируется в соответствии с концепцией SOP — чтобы программный код объявления не мог читать из внешнего хранилища чужие файлы.

Импровизированный оракул

При этом программному коду объявления разрешается пользоваться «импровизированным оракулом»: обращаться к внешнему хранилищу с, казалось бы, безобидным вопросом: «А существует ли у тебя файл X?»

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

INFO

Возможность создания такого оракула с технической точки зрения не нарушает SOP, согласно четвертому разделу RFC6454. Дело в том, что этот оракул злоупотребляет тонким, но фундаментальным различием между моделями безопасности, реализованными в обычных веб-приложениях и в мобильных приложениях.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


Владимир Карев: Инженер с 50-летним стажем. Окончил ТУСУР в 73-м. Карьеру свою начинал с работы на алтайском военном заводе РОТОР, где разрабатывал навигационную электронику для бортового вооружения подлодок. С вычислительной техникой имею дело ещё с тех пор, когда она была ламповой. Свой первый ZX Spectrum спаял самостоятельно. Если есть вопросы, не стесняйтесь писать в комментариях. А ещё лучше на электронную почту: vladimir.tech@mail.ru.

Комментарии (1)

  • Прошивка без гапсов и других апсов наше фсё. тотал+браузер+проверенное ПО. Никаких гухохольмаркетов.
    Изобрёл велосипед? :)