В 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. Дело в том, что этот оракул злоупотребляет тонким, но фундаментальным различием между моделями безопасности, реализованными в обычных веб-приложениях и в мобильных приложениях.

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

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

Подпишись на «Хакер» по выгодной цене!

Подписка позволит тебе в течение указанного срока читать ВСЕ платные материалы сайта. Мы принимаем оплату банковскими картами, электронными деньгами и переводами со счетов мобильных операторов. Подробнее о подписке

Аватар

Владимир Карев

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

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

  1. Аватар

    Kakoluk

    03.03.2019 at 07:24

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

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

Check Also

В популярной библиотеке для создания файлов PDF нашли опасный баг

Проблема была исправлена еще в прошлом году, но многие сайты и веб-приложения по-прежнему …