Технологические революции могут происходить молниеносно: менее десятилетия назад смартфоны были громоздкими устройствами с клавиатурой, и являлись дорогими игрушками для некоторых компаний. Сегодня же смартфоны прочно вошли в нашу жизнь. Мы доверяем им информацию, навигацию, коммуникацию, они являются неотъемлемой составляющей как бизнеса, так и жизни в целом.
Каждая новая технология приносит новые риски безопасности, и попытка поспеть за этими изменениями и есть один из основных вызовов, которые стоят перед индустрией безопасности. Сторона защиты всегда на несколько шагов позади. Например, обычной реакцией многих была бы попытка применить старый подход: смартфоны - это маленькие компьютеры и мобильные приложения - обычное ПО, значит требования безопасности абсолютно такие же? Но так это не работает. Операционные системы смартфонов отличаются от ОС компьютеров и мобильные приложения отличаются от веб приложений. Например, классический метод поиска вирусов на основе сигнатурного анализа не имеет смысл в современных мобильных операционных системах: не только потому, что это не совместимо с моделью распространения мобильных приложений, но еще и потому, что это технически невозможно из-за ограничений среды выполнения приложений (sandbox). Кроме того, некоторые типы уязвимостей, такие как переполнение буфера и XSS, менее релевантны к мобильным приложениям, нежели к десктопным и веб-приложениям (есть исключения).
Cо временем наша индустрия получила больше опыта в борьбе с мобильными угрозами. Как оказалось, мобильная безопасность в основном затрагивает хранение данных: приложения хранят нашу личную информацию, изображения, записи голоса и видео, заметки, учетные данные, информацию о бизнесе, местоположения и многое другое. Приложения играют роль клиентов, подключающих нас к сервисам, которыми мы используем ежедневно, и коммуникационных центров, обрабатывающих каждое сообщение, которым мы обмениваемся. Скомпрометировав телефон человека, вы получите неограниченный доступ к его личной жизни. Если учесть, что мобильные устройства легко теряются и похищаются, а мобильные вирусы сейчас активно развиваются, необходимость защиты данных становится ещё более очевидной.
Стандарты безопасности мобильных приложений должны сконцентрироваться на том, как они обрабатывают, хранят и защищают чувствительную информацию. Несмотря на то, что современные мобильные операционные системы, такие как iOS и Android, предоставляют API для безопасного хранения данных и сетевого взаимодействия, чтобы быть эффективным, оно должно быть корректно использовано. Хранение данных, межпроцессное взаимодействие, правильное использование криптографического API и безопасное сетевое взаимодействие - это только некоторые из аспектов, которые требуют внимательного рассмотрения.
Важный вопрос для нашей индустрии, в котором необходимо достичь соглашения: как далеко должны заходить специалисты в вопросах защиты конфиденциальности и целостности данных. Например, многие из нас согласятся, что мобильное приложение должно проверять сертификат сервера во время соединения TLS. Но что насчёт SSL pinning? Невыполнение этого требования ведёт к уязвимости? Должно ли это быть требованием, если приложение обрабатывает чувствительную информацию или это может быть контрпродуктивно? Нужно ли шифровывать данные, хранящиеся в SQlite, несмотря на то, что ОС выполняет приложение в песочнице (sandboxing)? То, что подходит одному приложению, может не подходить для другого. MASVS - это попытка стандартизации требований на основании уровней проверок, подходящих для разных моделей угроз.
Появление вредоносных программ и инструментов удаленного управления заставляют осознать тот факт, что мобильные ОС имеют недостатки, которыми могут воспользоваться злоумышленники. Для дополнительной защиты чувствительных данных и предотвращения фальсификаций на стороне клиента всё шире используются стратегии контейнеризации. Это место, где всё усложняется. Аппаратные и программные решения, такие как Android for Work и Samsung Knox, существуют, но они доступны не на всех устройствах. В качестве решения можно реализовать дополнительные программные механизмы защиты, но, к сожалению, не существует стандартов или руководств по тестированию для верификации таких методов.
В результате при тестировании информационной безопасности мобильных приложений постоянно возникают разногласия. Например, некоторые тестировщики приложений Android считают, что недостаточная обфускация или отсутствие детектирования root-доступа серьезными уязвимостями. Другие считают, что такие меры, как шифрование строк, обнаружение отладчика или обфускация не являются обязательными. Однако, этот двоякий взгляд не имеет смысла, так как меры защиты зависят от конкретной модели угроз для клиентского приложения. Защита на программном уровне не является бесполезной, но в конечном итоге её всегда можно обойти, так что она не должна быть использована как замена основным требованиям безопасности.
Цель MASVS - предложить общий фундамент для безопасности мобильных приложений (MASVS-L1), усиленные меры защиты (MASVS-L2) и меры защиты против угроз на стороне клиента (MASVS-R). MASVS предназначен для достижения следующих целей:
- Обеспечить требования для архитекторов и разработчиков ПО, стремящихся создавать безопасные мобильные приложения.
- Предложить промышленный стандарт, по которому можно проводить аудит безопасности мобильных приложений.
- Прояснить роль механизмов защиты ПО в мобильной безопасности и предоставить требования для проверки их эффективности.
- Предоставить конкретные рекомендации, для разных уровней безопасности, которые зависят от конкретного варианта использования.
Мы пониманием что 100% согласия в отрасли невозможно достичь. Однако, мы надеемся, что MASVS будет полезен в качестве руководства на всех этапах разработки и тестирования мобильных приложений. MASVS, как открытый стандарт, будет развиваться со временем, и мы рады любым предложениям и вкладу в развитие проекта.
Cлово от Bernhard Mueller