В этом разделе рассматриваются меры усиленной защиты, рекомендуемые для приложений, которые обрабатывают или предоставляют доступ к чувствительным данным или функциональности. Отсутствие каких-либо из этих элементов защиты не означает наличие уязвимости - напротив, они призваны повысить устойчивость приложения к реверс инжинирингу и конкретным атакам на стороне клиента.
Требования в этом разделе должны применяться по мере необходимости, основываясь на оценке рисков, вызванных несанкционированным вмешательством в приложение и/или восстановлением исходного кода. Мы предлагаем обратиться к документу OWASP «Technical Risks of Reverse Engineering and Unauthorized Code Modification Reverse Engineering and Code Modification Prevention» (см. ссылки ниже) для составления списка бизнес рисков и связанных с ними технических угроз.
Обратите внимание, что программные меры защиты из данного раздела не должны использоваться в качестве замены основным требованиям безопасности. Вместо этого они должны быть реализованы как специализированное дополнение, направленное на локализацию конкретных угроз, в мобильном приложении, соответствующем требования MASVS.
Следует рассмотреть следующие соображения:
-
Должна быть определена модель угроз, в которой прописаны конкретные атаки на стороне клиента, от которых необходимо защититься. Кроме того, должна быть указана степень защиты, которую следует обеспечить. Например, цель внедрения защитных мер может заключаться в том, чтобы заставить авторов вредоносного ПО, нацеленного на данное приложение, приложить значительные усилия для реверс инжиниринга.
-
Модель угроз должна отвечать здравому смыслу. Например, сокрытие криптографического ключа в whitebox реализации не имеет смысла, если злоумышленник может применить технику «code lifting».
-
Эффективность защиты всегда должна проверяться экспертом, имеющим опыт тестирования методов обфускации и защиты от фальсификации (см. также главы «Реверс инжиниринг» и «Оценка защиты ПО» в OWASP MSTG.
# | MSTG-ID | Описание | R |
---|---|---|---|
8.1 | MSTG-RESILIENCE-1 | Приложение обнаруживает и реагирует на наличие root или jailbreak, либо уведомляя пользователя, либо прекращая работу. | x |
8.2 | MSTG-RESILIENCE-2 | Приложение не позволяет использовать отладчики и/или обнаруживает и реагирует на использование отладчика. Все доступные протоколы отладки должны быть учтены. | x |
8.3 | MSTG-RESILIENCE-3 | Приложение обнаруживает и реагирует на внесения изменений в исполняемые файлы и критичные данные в своей песочнице. | x |
8.4 | MSTG-RESILIENCE-4 | Приложение обнаруживает и реагирует на наличие на устройстве широко используемых инструментов и фреймворков для реверс инжиниринга. | x |
8.5 | MSTG-RESILIENCE-5 | Приложение обнаруживает и реагирует на запуск на эмуляторе. | x |
8.6 | MSTG-RESILIENCE-6 | Приложение обнаруживает и реагирует на изменение своего кода и данных в оперативной памяти. | x |
8.7 | MSTG-RESILIENCE-7 | Приложение реализует несколько механизмов для каждой категории защиты (с 8.1 по 8.6). Обратите внимание, что на устойчивость к атакам влияет количество, разнообразие и оригинальность используемых механизмов. | x |
8.8 | MSTG-RESILIENCE-8 | Механизмы обнаружения инициируют ответные меры разных типов, включая отложенные и скрытые. | x |
8.9 | MSTG-RESILIENCE-9 | Обфускация применена в том числе и к тем программным механизмам, которые препятствуют деобфускации методами динамического анализа. | x |
# | MSTG-ID | Описание | R |
---|---|---|---|
8.10 | MSTG-RESILIENCE-10 | Приложение реализует функциональность привязки экземпляра приложения к устройству, формируя его отпечаток из нескольких свойств, уникальных для устройства. | x |
# | MSTG-ID | Описание | R |
---|---|---|---|
8.11 | MSTG-RESILIENCE-11 | Все исполняемые файлы и библиотеки, принадлежащие приложению, зашифрованы на файловом уровне, либо важные участки кода и данных зашифрованы внутри исполняемых файлов. Простой статический анализ не позволяет обнаружить важный код или данные. | x |
8.12 | MSTG-RESILIENCE-12 | Если задачей обфускации является защита конфиденциальных данных, то используется схема обфускации, которая подходит не только для этой задачи, но и защищает от ручной тестирования и автоматизированных деобфускаторов и учитывает последние исследования по данной теме. Эффективность схемы обфускации должна быть проверена с помощью ручного тестирования. Обратите внимание, что использование аппаратных средств защиты (если они поддерживаются устройством) предпочтительнее обфускации. | x |
# | MSTG-ID | Description | R |
---|---|---|---|
8.13 | MSTG-RESILIENCE-13 | В качестве глубокой защиты, наряду с существенным усилением защиты взаимодействия, шифрование обмениваемых приложением сообщений может шифроваться для дальнейшего предотвращения перехвата. | x |
OWASP MSTG содержит подробные инструкции по верификации соответствия требованиям, перечисленным в этом разделе.
- Android: Тестирование устойчивости к обратной разработке - https://github.com/OWASP/owasp-mastg/blob/master/Document/0x05j-Testing-Resiliency-Against-Reverse-Engineering.md
- iOS: Тестирование устойчивости к обратной разработке - https://github.com/OWASP/owasp-mastg/blob/master/Document/0x06j-Testing-Resiliency-Against-Reverse-Engineering.md
Для получения дополнительной информации смотрите также:
- OWASP Mobile Top 10: M8 (Фальсификация кода) - https://owasp.org/www-project-mobile-top-10/2016-risks/m8-code-tampering
- OWASP Mobile Top 10: M9 (Обратная разработка) - https://owasp.org/www-project-mobile-top-10/2016-risks/m9-reverse-engineering
- ОWASP Reverse Engineering Threats - https://wiki.owasp.org/index.php/Technical_Risks_of_Reverse_Engineering_and_Unauthorized_Code_Modification
- OWASP Reverse Engineering and Code Modification Prevention - https://wiki.owasp.org/index.php/OWASP_Reverse_Engineering_and_Code_Modification_Prevention_Project