Supply Chain Security
Узнать большеПо состоянию на сентябрь 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 формирует результаты проверок в форме, с которой может работать даже человек, далекий от программирования (специалист по информационной безопасности, системный администратор и так далее).