Как наладить контроль безопасности мобильных приложений
Андрей Рыжкин, Алексей Клинов, 25/07/19
Андрей Рыжкин и Алексей Клинов из AGIMA
Безопасность цифровой архитектуры любого продукта — критически важный атрибут как для бизнеса, так и для пользователей. Это дополнительный показатель качества и надежности, который необходимо поддерживать на всех этапах производства и эксплуатации приложения.
Приступая к разработке, важно определить, какие данные мы защищаем, едь в любой организации их очень много. Накопленные данные локализуются в разных системах, их сложно контролировать. К информации, которую необходимо защищать обычно относят:
- Персональные данные сотрудников и клиентов.
- Данные доступа в банк-клиент.
- Данные о клиентах компании.
- Производственные чертежи.
- Проектная документация.
Последствия кражи данных влекут за собой крупные финансовые потери для организации, снижение ее репутации, потерю ключевых клиентов и партнеров, срыв сделок и проектов.
Средств защиты от уязвимостей на рынке еще очень мало. Бизнесу же нужно рабочее приложение с эффективным функционалом, способное приносить финансовую отдачу. Но каким бы идеальным ни было приложение, у него могут быть артефакты, связанные с уязвимостью. Они не проявляют себя до определенного момента — пока не потребуются конкуренту или стороннему хакеру. Эти уязвимости могут быть использованы с корыстной целью, чтобы совершить попытку проникнуть через веб-сайт или приложение внутрь организации и получить доступ к ценным данным. В результате бизнес серьезно пострадает.
К сожалению, секьюрити-анализ все еще редкость для заказной разработки. Причина в уникальности проектов. Все они слишком разные, и у каждого свои потребности. Это влияет на стоимость анализа. Учитывая низкую маржинальность бизнеса, запустить процесс на поток в заказной разработке не всегда возможно. И все же, процессом лучше не пренебрегать.
Как не допустить кражу данных из приложения?
Только на WAF (файрвол) в плане защиты полагаться нельзя: может не отработать правило, использоваться некорректная конфигурация или устаревшие сигнатуры. Только комплекс мер: применение vulnerability-scanner, pen-test, WAF и DDos Protection обеспечивает безопасность данных приложения.
Далее, когда приложение находится в стадии пред-прода, имеет смысл воспользоваться специализированными сканерами, анализаторами кода и провести pen-test. Это позволит отыскать уязвимости, которые не удалось выявить, анализируя код в процессе разработки.
Как организовать процесс тестирования на уязвимости?
Аудит информационной безопасности нужно проводить еще на стадии захода нового проекта в разработку. При этом важно анализировать технический долг продукта — смотреть на баги и уязвимости. После этого нужно составить роадмап по устранению уязвимостей. Иногда всё удается устранить на первом этапе. Если же проблем много, бороться с ними придется в процессе дальнейшей разработки. Сначала устранять критические, а затем — менее опасные.
Существует несколько подходов к анализу кода:
- Полная интеграция в процессе разработки CI/CD.
- Ревизия безопасности на контрольных точках.
- Ситуационная или разовая ревизия безопасности.
- Учет критериев безопасности и оценка рисков.
Идеальный вариант — интегрировать секьюрити-анализ в ежедневный ревью кода. Такой подход особенно актуален для проектов, которые один и тот же разработчик развивает длительное время.
Второй вариант — ревизия безопасности в контрольных точках. Этот метод подходит, если у продукта редкие релизы.
Ситуационную или разовая ревизию имеет смысл запускать, если проект только пришел в разработку или если он достаточно простой.
Подход, комбинированный из трех перечисленных выше версий, позволяет: снизить количество потенциальных уязвимостей на релизе, минимизировать технический долг продукта, сократить сроки вывода приложения в прод, применять накопленный опыт для анализа защищенности приложений сторонних разработчиков.
Результатом секьюрити-анализа на ранних стадиях разработки становится уменьшение репутационных рисков компании, снижение стоимости устранения уязвимостей, уменьшение количества независимых проверок приложения. Приложение раньше выходит в прод.
Вместо заключения
Сегодня поиск уязвимостей в программных продуктах, мобильных и веб-приложениях становится важным направлением деятельности всех ведущих компаний-разработчиков. Одни считают надежным экспертный анализ уязвимостей и доверяют тестирование внутренним специалистам. Другие используют pen-тесты, сканеры уязвимостей и анализаторы кода. Третьи интегрируют в процесс разработки инструменты SAST. При этом до начала работ рекомендуется строить модели угроз и проводить анализ потенциальных рисков, связанных с кражей и искажением критически значимых данных.
Не стоит полагаться на только на файрволл и бесплатные средства защиты. Надежнее всего — использовать комплексный подход, регулярно и тщательно проверять код на баги и уязвимости.