Количество угроз мобильных устройств и приложений растет соизмеримо лавинообразному распространению носимых устройств, однако, как показывает практика, большинство сценариев  атак содержат определенные векторы, либо могут быть классифицированы по типу обнаруженных уязвимостей в установленных компонентах программного обеспечения. Вашему вниманию предлагается классификация векторов атак и уязвимостей мобильных устройств OWASP Mobile Top 10 2016.

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

OWASP Mobile Top 10 на русском:

M1 Обход архитектурных ограничений (Improper Platform Usage)
Эта категория охватывает злоупотребление особенностями платформы, обхода ограничений или неиспользования систем контроля управления безопасности платформы. Характерно как для платформы Android, для iOS (обход ограничений Touch ID  и Keychain) и других мобильных ОС. Затрагивает системы контроля безопасности, которые являются частью мобильной операционной системы.

M2 Небезопасное хранение данных (Insecure Data Storage)

Эта категория представляет собой комбинацию M2 + M4 Mobile Top Ten 2014. К ней относятся небезопасное хранение и непреднамеренные утечки данных.

M3 Небезопасная передача данных (Insecure Communication)

Недостаточное подтверждение достоверности источников связи, неверные версии SSL, недостаточная проверка согласования, передача чувствительных данных в открытом виде (cleartext) и т.д.

M4 Небезопасная аутентификация  (Insecure Authentication)
Эта категория относится к аутентификации конечного пользователя или неверное управление сеансами. Включает следующие пункты:

  • Отсутствие требования проверки идентификации пользователя ;
  • Отсутствие проверки контроля сеанса;
  • Недостатки управления сессиями.

M5 Слабая криптостойкость (Insufficient Cryptography)
Применение криптостойких алгоритмов для передачи чувствительной информации. Использование криптоалгоритмов может быть недостаточным в частных случаях. Эта категория описывает варианты ненадлежащего использования криптографических элементов, слабой или недостаточной криптостойкости.

Всё, что связано с TLS или SSL относится к категории M3. Если приложение не  использует криптографические средства при необходимости, это относится к категории М2.

M6 Небезопасная авторизация (Insecure Authorization)
Категория описывает недостатки авторизации (проверка (валидация) на стороне клиента, принудительный просмотр и т.д.). Такие события отличаются от проблем аутентификации (например, устройства регистрации, идентификации пользователей и т.д.).

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

M7 Контроль содержимого клиентских приложений (Client Code Quality)
Ненадлежащий контроль входных данных. Проблемы реализации технологий кода в клиент-сайд приложениях, отличающиеся от написания кода и реализации в сервер-сайд приложениях. К этому относится: переполнение буфера, format string уязвимости, а также другие ошибке на уровне кода, где решением является необходимость  переписать код, который работает на мобильном устройстве.

M8 Модификация данных  (Code Tampering)
Эта категория описывает изменение исполняемых файлов, локальных ресурсов, перехват вызовов сторонних процессов, подмена runtime методов и динамическую модификацию памяти.

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

M9 Анализ исходного кода  (Reverse Engineering)
Эта категория включает в себя анализ бинарных файлов для определения исходного кода, библиотек, алгоритмов и т.д. Программное обеспечение, такое как IDA Pro, Hopper, otool и  другие инструменты реверс-инжиниринга могут дать представление о внутренней работе приложения. Это может быть использовано для поиска уязвимостей  приложения, извлечения критичной информации, такой как бэкенд-сервера, ключей шифрования или интеллектуальной собственности.

M10 Скрытый функционал  (Extraneous Functionality)
Часто разработчики включают в код приложений скрытые функциональные возможности, бэкдоры или другие механизмы, функциональность которых предназначена для общего использования. Под эту категорию подходит известное определение «security through obscurity». Разработчик может случайно оставить пароль в качестве комментария в гибридном приложении. Либо это может быть отключение двухфакторной аутентификации во время тестирования.