Безопасность Android приложений

По состоянию на сентябрь 2021 г. в мире насчитывалось более 2,8 млрд активных пользователей устройств с операционной системой Android. При этом в более чем 60% приложений для девайсов на Android есть уязвимости. Проблемы свойственны не только бесплатным продуктам, но и вполне «серьезным» app, над которыми работают сильные команды специалистов. К слову, анализ безопасности APK банковских/финансовых приложений в более чем 80% случаев показывает наличие ошибок или проблем с безопасностью.

Широкое распространение Android порождает немалый спрос на услуги разработчиков под эту платформу. Иногда к работе с коммерческими проектами привлекаются специалисты с небольшим опытом. Зачастую устанавливаются сжатые сроки на разработку, из-за этого вопросам безопасности может уделяться недостаточное внимание. Чтобы избежать проблем, заказчикам и конечным пользователям Android app есть смысл перестраховаться и организовать проверку своих устройств собственными силами. Провести тестирование безопасности APK можно, например, с помощью программ для статического анализа. К этой категории относится наш продукт Solar appScreener.

Типовые уязвимости приложений для Android, которые могут эксплуатироваться злоумышленниками

В большинстве случаев разработка под Android ведется на языке Java. Некоторые модули, благодаря набору инструментов Android NDK, разрабатываются на C или С++. Соответственно, типовые уязвимости APK-приложений будут схожи с проблемами, характерными для этих языков.

Небезопасное хранение данных

Распространенная проблема, выявляемая при проверке безопасности app – небезопасное хранение пользовательских и других данных. Некоторые приложения хранят их на диске в открытом виде. В таком случае есть вероятность получения доступа к ним из любых других приложений (в том числе вредоносных), у которых есть доступ к дисковому пространству устройства. Такие уязвимости могут обнаруживаться даже в продуктах, над которыми трудятся серьезные команды. Пример – одна из версий популярного мессенджера, в которой база контактов хранилась на устройстве в открытом виде.

Небезопасная авторизация и аутентификация

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

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

Уязвимость к SQL-инъекциям

SQL-инъекция – метод извлечения информации из базы данных. Угрозы в APK-приложениях обычно реализуются через слабые механизмы фильтрации входящих данных (например, через пользовательский ввод). Посредством SQL-инъекций злоумышленники могут читать данные из базы данных, модифицировать их, удалять или записывать – т. е. влиять на защищенность, целостность, а также доступность информации.

Неправильное использование возможностей платформы

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

Чаще всего встречаются уязвимости мобильных приложений Android, связанные с:

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

  • Запросом чрезмерных полномочий или их неверный подбор.

  • Использованием открытых intents, через которые можно получить доступ к чувствительной информации.

Лишняя (неэксплуатируемая) функциональность

Добавление в приложение дополнительной функциональности (для сервисных или иных целей), наличие которой неочевидно рядовому пользователю, – довольно распространенная практика. Но это еще один из векторов атаки. Злоумышленники могут эксплуатировать такую функциональность для реализации угроз.

Проверка исходного кода Android-приложений статическим анализатором исходного кода

С проверкой исходного кода app для платформы Андроид и поиском уязвимостей неплохо справляются SAST-инструменты. Программы для статического анализа работают без запуска приложений, анализируют их исходный код и сторонние компоненты (библиотеки и проч.). Пример такого программного обеспечения – Solar appScreener.

С помощью SAST-анализатора проверяются:

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

  • Файлы DEX. Статический анализатор безопасности app декомпилирует их в Java. После этого он сканирует код и выявляет фрагменты/конструкции, которые могут быть небезопасными. Статический анализ позволяет выявлять различные вероятные угрозы: небезопасное хранение данных, авторизацию и аутентификацию, места, уязвимые к SQL-инъекциям, скрытую функциональность, а также другие проблемы.

  • Разделяемые библиотеки .so, компоненты и ресурсы приложения, а также другие типы файлов, используемые им.

Такой способ анализа уязвимостей APK может быть реализован как разработчиками на разных этапах жизненного цикла продукта, так и конечными пользователями. Например, Solar appScreener формирует результаты проверок в форме, с которой может работать даже человек, далекий от программирования (специалист по информационной безопасности, системный администратор и так далее).

Спасибо!
Ваша заявка принята

В ближайшее время с Вами свяжется наш менеджер

Спасибо!

Теперь вы будете в числе первых получать новости о наших продуктах