1 декабря 2023
Кейсы
Аудит безопасности приложения страховой компании
В современных реалиях информационная безопасность — это не только неотъемлемая составляющая бизнеса, но и одна из самых приоритетных задач для любой компании, использующей онлайн-ресурсы и персональную информацию клиентов. Мы провели аудит защищенности мобильного приложения у одной из страховых компаний и нашли несколько слабых мест.
Цели и задачи продукта
Главная цель аудита — это комплексное исследование защищенности мобильного приложения для Android и iOS, а также его архитектуры. Для достижения этой цели мы провели тестирование безопасности с помощью статического и динамического анализа, нашли уязвимости и оценили их критичность.
Отметим, что аудит защищенности лишь фиксирует наличие уязвимостей, а не устраняет их. Мероприятия по устранению угроз — это отдельная задача. Все работы были выполнены независимой командой специалистов True Engineering.
Анализ, подготовка
Мы получили последнюю сборку мобильного приложения от клиента (страховой компании), после чего проанализировали технологии, используемые в приложении, и составили план аудита. Поиск уязвимостей выполнялся методами «белого» и «черного ящика»: «белый ящик» предполагает наличие доступа к исходному коду, а «черный ящик», наоборот, имитирует действия потенциального злоумышленника, и проводится аудитором без доступа к коду.
Для оценки защищенности наша команда опирается как на международные рейтинги уязвимостей OWASP Mobile TOP 10 и OWASP TOP 10 API Security, так и на методику проверки безопасности мобильных приложений OWASP MASVS. Это помогает приоритизировать рекомендации по степени критичности уязвимостей и исправить все ошибки, пока они не принесли бизнесу серьезные потери.
Решение
Комплексная проверка была проведена с помощью следующих инструментов:
- фреймворк MobSF
- платформа для тестирования безопасности приложений Burp Suite
- инструменты Charles Proxy, Postman, Frida, Objection, Grapefruit
Исследование безопасности мобильного приложения включила в себя не только проверку его взаимодействия с сервером, но и анализ безопасности серверного решения. Также, для максимальной приближенности к действиям реальных взломщиков мы осуществили имитации атак и использовали техники поиска уязвимостей, которые применяются для получения несанкционированного доступа к конфиденциальной информации.
В проверку вошли следующие этапы:
- тестирование на предмет безопасного хранения данных
- тестирование механизмов аутентификации
- тестирование безопасности передачи данных
- тестирование взаимодействия с платформой
- тестирование конфигурации сборки
- тестирование устойчивости к реверс-инжинирингу
- тестирование бизнес-логики приложения
Для оценки уровня опасности всех найденных уязвимостей мы используем методику CVSS 3.1., которая при проверке учитывает самые важные факторы:
Результаты
В ходе аудита было выявлено 11 уязвимостей: три критичного уровня, три высокого уровня, четыре среднего и одна низкого.
Расскажем подробнее о ключевых обнаруженных уязвимостях.
- В конфигурационном файле приложения мы обнаружили CLIENT_ID, CLIENT_SECRET и APIKEY, а также другие строки, которые содержат чувствительную информацию — это критичная угроза для безопасности. Злоумышленники смогут с легкостью получить доступ к любым конфиденциальным данным, если в коде хранятся ключи и секреты в открытом виде.
- Отсутствие ограничений на вызов методов — еще одна критичная уязвимость. В ходе исследования мы установили, что сервер не имеет достаточной защиты от многочисленных вызовов методов. Это может привести к таким угрозам, как DDOS атака на сервер или атака «полным перебором» логинов и паролей (brute force).
- Другая уязвимость, но уже высокого уровня риска — это передача чувствительных данных пользователя в открытом виде при взаимодействии с сервером. Это происходит, если в приложении отсутствуют механизмы защиты канала связи и SSL Pinning. Если взломщик осуществит атаку MITM (Man-In-The-Middle), в его распоряжении окажется вся информация о пользователе: паспортные данные, номер телефона, логины, пароли и ПИН-коды.
Итогом аудита безопасности стал подробный отчет с описанием уязвимостей и рекомендациями по решению.
По итогам аудита мы сформировали подробный отчет с описанием уязвимостей и алгоритмом их обнаружения, а также указанием уровня опасности и степени критичности. Мы предоставили рекомендации по устранению уязвимостей и риски в результате дальнейшей эксплуатации приложения без устранения найденных проблем.