Мобильные устройства и мобильные приложения являются частью нашей повседневной жизни. Мы, как пользователи, ожидаем, что наши данные будут конфиденциальными и безопасными. Как разработчик начинает писать безопасные мобильные приложения?

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

Пожалуйста, не торопитесь и подумайте об этом минуту или две.

Готовый? Если ваш список относительно невелик или довольно расплывчат, эта статья для вас. И я не могу тебя винить. Безопасность кажется сухой и сложной темой. Хорошая новость в том, что доступно много информации. Цель этой статьи - показать вам четкий путь, с чего и как начать. Потерпите меня. Давай сделаем это.

Почему безопасность

Как проповедует автор Саймон Синек, давайте начнем с того, почему: Почему безопасность? Здесь мы можем принять две точки зрения: пользователя и разработчика приложений.

Перспектива пользователя приложения

Наши мобильные телефоны стали нашими повседневными спутниками. Согласно этой статье Forbes, в 2020 году мы проводим на своих телефонах около 4,3 часа каждый день. Благодаря Covid это число увеличилось на 25 процентов по сравнению с прошлым годом. Это время потрачено на использование разных приложений. Использование этих приложений оставляет за собой след данных. Мы доверяем разработчикам как пользователям этих приложений обеспечивать безопасность наших данных. Проблемы безопасности, такие как возможная утечка наших секретов, могут привести к потере доверия к приложению и компании, стоящей за приложением.

Перспектива поставщика приложений

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

Безопасность приложений другая

Что отличает безопасность мобильных приложений от безопасности в Интернете или онлайн-сервисах? Вектор атаки отличается от других связанных с безопасностью типов использования, таких как веб-службы и онлайн-сервисы.

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

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

Подведем итог всем наиболее значимым векторам атак на безопасность мобильных приложений:

  • Локальные сохраненные данные и аутентификация
  • Интеллектуальная собственность

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

Уменьшить поверхность

В начале статьи я обещал показать, как писать безопасные приложения. Давайте раскроем этот секрет или познакомим вас со всей группой блестящих людей, которые бесплатно делятся своими знаниями: организация OWASP.

OWASP

Что такое OWASP? OWASP является аббревиатурой от Open Web Application Security Project и является некоммерческой организацией, которая работает над повышением безопасности программного обеспечения. Они являются отличным источником инструментов и ресурсов по теме безопасности. Вот почему это идеальное место и для нас.

OWASP предлагает широкий спектр проектов безопасности. Самыми распространенными из них являются OWASP Top Ten или OWASP Web Security Testing Guide. Кроме того, в рамках данной статьи более важными являются стандарт (MASVS) и руководство (MSTG).

Стандарт - MASVS

MASVS означает Mobile AppSec Verification или полностью расширенный Стандарт проверки безопасности мобильных приложений. Это стандарт, определяющий базовые требования безопасности для мобильных приложений.

Все руководство находится в открытом доступе на GitHub или, что еще удобнее, доступно как GitBook.

Он охватывает широкий круг тем об архитектуре и создании максимально безопасного мобильного приложения. Он охватывает все наиболее известные векторы атак, которые мы определили ранее, и выходит даже за рамки этого, описывая требования по другим темам безопасности приложений, например:

  • Архитектура и дизайн
  • Хранение данных и конфиденциальность
  • Криптография
  • Аутентификация и управление сеансом
  • Сетевое общение
  • Взаимодействие с платформой
  • Качество кода и настройки сборки
  • Устойчивость

Более глубокое погружение

Хранение конфиденциальных данных - обычная задача для мобильного приложения. К конфиденциальным данным относятся:

  • Личная информация - сокращенно ПИ
  • Конфиденциальная информация
  • Банковские и карточные данные
  • Общая информация для клиентов

Давайте посмотрим, что рекомендует стандарт по хранению конфиденциальных данных:

Это отличные рекомендации. Если вам интересно, что обозначают L1 и L2:

  • L1 определяет стандартную безопасность. Каждое мобильное приложение должно использовать этот стандарт и следовать ему.
  • L2 определяется как глубинная защита и охватывает более сложные темы, которые должны использоваться приложениями, обрабатывающими очень конфиденциальные данные, например банковскими приложениями.

Еще одна замечательная особенность OWASP заключается в том, что они предоставляют нам стандарт, но они также предлагают контрольный список для отслеживания всех требований. Контрольный список можно найти в виде листов Excel на GitHub:



Это отличный материал. Стандарт и контрольные списки дают нам правильное направление в отношении того, что считается хорошей основой для наших потребностей в безопасности. Перейдем к гайду.

Путеводитель - MSTG

MSTG означает Руководство по тестированию мобильной безопасности.

Это руководство, которое используют тестировщики для проверки вашего приложения на наличие проблем с безопасностью. Лучшее в руководстве MSTG - это то, что оно довольно обширное и отражает все знания тестировщиков.

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

Каждая глава содержит примеры кода и диаграммы - глубокие и обширные знания прямо здесь, предлагаемые для вас бесплатно. Просто прочтите и следуйте лучшим практикам.

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

Вот и все. Стандарт OWASP и руководство содержат все знания, необходимые для ответа на исходный вопрос о реализации безопасных мобильных приложений.

Но iOS безопаснее

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

Каждое приложение представляет собой контейнер, и получить доступ ко всей информации, хранящейся в этом контейнере, без взломанного телефона довольно сложно. Некоторое время назад джейлбрейк был большим делом и потерял популярность, поскольку многие вещи, предлагаемые для взлома устройства, интегрированы в последнюю версию iOS (iOS 14.4 - самая последняя выпущенная операционная система на момент написания этой статьи). Несмотря на потерю популярности, джейлбрейк все еще существует и очень возможен даже с iOS 14. Быстрый поиск в Google по Jailbreak и iOS 14 подтвердит это утверждение.

Но что, если я скажу вам, что мне не нужно делать джейлбрейк, чтобы шпионить за вашим приложением? Передайте привет ФРИДА.

ФРИДА

FRIDA - это бесплатный набор динамических инструментов для разработчиков, реверс-инженеров и исследователей безопасности. FRIDA - это среда выполнения, которая может быть скомпилирована в приложение и позволяет:

  • Внедрить скрипты
  • Подключитесь к любой функции
  • Шпионить за криптографическими API
  • Отслеживание кода частного приложения

Вы можете спросить, подождите, время выполнения, вы сказали? Это означает, что вам нужно сначала внедрить среду выполнения в приложение. Да вы правы. Это не сложно. Позвольте представить вам еще один инструмент, который является отличным компаньоном FRIDA: Возражение. Возражение делает жизнь любого, кто интересуется вашим приложением (исследователей безопасности, тестировщиков или любых сомнительных персонажей), относительно простой. С помощью Objection вы можете распаковать, вставить среду выполнения FRIDA и перекодировать знак из Терминала всего с помощью пары операторов. Такие инструменты, как iOS-deploy, позволяют вам установить приложение на телефон и следить за приложением с внедренной средой выполнения FRIDA. И все это без взлома телефона.

Android

Набор инструментов FRIDA также работает на Android. На YouTube есть множество видеороликов, демонстрирующих обход SSL-закрепления с помощью среды выполнения FRIDA с минимальными усилиями.

Следы

Думайте о безопасности прежде всего. Сотрудники службы безопасности называют это «смещением влево».

  • Используйте МАСВС как основу.
  • После этого ввести безопасность сложно.
  • Есть много отличных вещей, доступных бесплатно.
  • Сообщите вам, что многие умные люди думали о том, как создавать безопасные приложения. Используйте их идеи и методы - все бесплатно!

использованная литература

Первоначально опубликовано на https://endlessnumbered.com 23 февраля 2021 г.