В 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»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


Check Also

Баг в реестре контейнеров Harbor позволяет любому получить права администратора

Специалисты Palo Alto Networks предупредили, что используя уязвимость в реестре контейнеро…

1 комментарий

  1. Аватар

    Kakoluk

    03.03.2019 at 07:24

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

Оставить мнение