Матричный принтер на чёрном антистатическом коврике печатает зелёным моноширинным шрифтом текст MASVS v1.5.0. Янтарный свет выхватывает бумагу из темноты, на поверхности заметны полосы сканирования.


На последнем мобильном пентесте клиент прислал PDF - OWASP MASVS v1.5.0, русский перевод - и попросил «пройтись по всем пунктам». Часть контролей оказалось невозможно проверить без доступа к исходному коду, ещё часть дублировала требования ASVS к бэкенду. Итого: треть чеклиста помечена «N/A», клиент недоволен, тимлид объясняет, что стандарт - не чеклист для black box. Ситуация повторяется на каждом втором engagement, связанном с MASVS. Версия 1.5.0 - финальный релиз перед масштабной перестройкой стандарта в v2.0.0, и от пентестера требуется чётко понимать: что в ней работает, где ограничения и как скоро правила игры изменятся.

Контекст MASVS v1.5.0: последняя версия перед перестройкой стандарта​

MASVS v1.5.0 - финальная точка линейки v1.x. MASTG (Mobile Application Security Testing Guide) той же версии до сих пор ссылается именно на этот стандарт, и связка MASVS v1.5.0 + MASTG v1.5.0 остаётся рабочим инструментом для большинства мобильных пентестов.

1780132434057.webp

Проект OWASP MAS (Mobile Application Security) прошёл ребрендинг в августе 2022 года: из «OWASP MSTG project» стал «OWASP MAS project». MSTG переименовали в MASTG, всё семейство ресурсов получило единый префикс MAS. Параллельно появился MASWE (Mobile Application Security Weakness Enumeration) - в v2.0.0 он станет мостом между MASVS и MASTG. По данным mas.owasp.org, в v2.0.0 привычные уровни верификации (L1, L2, R) убраны полностью и заменены на «MAS Testing Profiles», перенесённые в MASWE.

Для мобильного пентестера: пока клиент в ТЗ ссылается на MASVS v1 (а так делает подавляющее большинство), чеклист строится по v1.5.0. Переход на v2 изменит методологию принципиально - готовиться стоит, но работать нужно с тем, что есть.

Контроли безопасности MASVS v1.5.0 и маппинг на MITRE ATT&CK​

MASVS v1.5.0 содержит восемь групп контролей, структурированных по поверхности атаки мобильного приложения: MASVS-STORAGE, MASVS-CRYPTO, MASVS-AUTH, MASVS-NETWORK, MASVS-PLATFORM, MASVS-CODE, MASVS-RESILIENCE и MASVS-PRIVACY.

Ни один русскоязычный источник не связывает эти группы с конкретными техниками MITRE ATT&CK - а зря, потому что именно такой маппинг даёт операционный контекст: что атакующий получает, если контроль не реализован.

MASVS-группаMITRE ATT&CKЧто проверяется на пентесте
MASVS-STORAGET1552 Unsecured CredentialsОткрытый текст в SharedPreferences, SQLite, логах, Keychain
MASVS-CRYPTOT1552.004 Private KeysХардкод ключей, MD5/SHA1, отсутствие ротации
MASVS-NETWORKT1573 Encrypted ChannelTLS-конфигурация, certificate pinning, cleartext HTTP
MASVS-PLATFORMT1056.001 KeyloggingWebView-инъекции, IPC (intents, URL schemes), deep links
MASVS-RESILIENCET1027 Obfuscated Files, T1553.002 Code SigningОбфускация, anti-tamper, root/jailbreak-детект
MASVS-AUTH- (оверлап с ASVS)Биометрия, MFA, серверная валидация сессий
MASVS-CODE-Зависимости, обработка ошибок, безопасность сборки
MASVS-PRIVACY-Минимизация данных, трекеры, согласие пользователя

Хранение и криптография: MASVS-STORAGE и MASVS-CRYPTO​

MASVS-STORAGE - первое, что проверяется на каждом engagement. Контроли требуют: чувствительные данные в KeyStore (Android) или Keychain (iOS), базы данных зашифрованы, в логах и бэкапах нет открытого текста.

Начинаю с
📚 Часть контента скрыта. Этот материал доступен участникам сообщества с рангом One Level или выше
Получить доступ просто — достаточно зарегистрироваться и проявить активность на форуме

Сеть и аутентификация: MASVS-NETWORK и MASVS-AUTH​

MASVS-NETWORK - TLS-конфигурация, certificate pinning и отсутствие cleartext-трафика. В терминах MITRE ATT&CK - противодействие T1573 (Encrypted Channel): если приложение не пиннит сертификат, атакующий с позиции MitM перехватывает «зашифрованный» канал, подставив свой CA.

Проверка через Burp Suite с кастомным CA-сертификатом на устройстве - основная процедура. Если трафик перехватывается без дополнительных манипуляций - pinning отсутствует. Для обхода пиннинга в защищённых приложениях - objection с командой android sslpinning disable или специализированный Frida-скрипт, адаптированный под конкретную реализацию (OkHttp, TrustManager, Network Security Config).

MASVS-AUTH покрывает серверную валидацию сессий, биометрию и MFA. Тут стандарт безопасности мобильных приложений v1.5.0 пересекается с ASVS. Карлос Хольгера, со-лидер проекта OWASP MAS, в интервью NowSecure прямо указывал на «clear overlap with the ASVS, which is much more thorough for various backend vulnerabilities»«Явное совпадение с ASVS, который гораздо тщательнее проверяет различные уязвимости бэкэнда». На мобильном пентесте AUTH-контроли чаще закрываются через тестирование API: подмена токенов, IDOR, brute-force OTP - зона ASVS, но формально входит и в MASVS. Получается двойной учёт: одну и ту же проверку можно записать в оба стандарта, а клиент думает, что получил два независимых слоя защиты.

Платформа, код и устойчивость к реверсу​

MASVS-PLATFORM проверяет взаимодействие с ОС: конфигурация WebView, IPC-механизмы (Android intents, iOS URL schemes), deep links. Exported activity без проверки вызывающего компонента или WebView с включённым addJavascriptInterface - классика для эксфильтрации данных и выполнения произвольного кода.

MASVS-CODE - обновления зависимостей, обработка ошибок, отсутствие debug-флагов в продакшн-сборке. MobSF закрывает большую часть статических проверок этой группы.

MASVS-RESILIENCE - группа, вызывающая больше всего споров. Она требует обфускации, root/jailbreak-детекта, anti-debugging. Маппинг на MITRE ATT&CK: T1027 (Obfuscated Files or Information) и T1553.002 (Code Signing). На пентесте проверка RESILIENCE сводится к попытке обойти защиты:
  1. Подключить Frida к процессу
  2. Пропатчить APK через apktool
  3. Переподписать
  4. Запустить на рутованном устройстве
Если всё работает без усилий - контроли не реализованы. Если Frida подключается с первой попытки, а рут-детект обходится MagiskHide - ну, разработчики хотя бы попытались. Спойлер: обычно не попытались.

MASVS-PRIVACY - группа, добавленная в поздних версиях v1.x. Минимизация данных, трекеры, согласие. На пентесте проверяется анализом трафика при первом запуске приложения до принятия privacy policy.

Уровни верификации MASVS L1, L2 и R: как выбрать скоуп мобильного пентеста​

MASVS v1.5.0 определяет три уровня, и от выбора зависит объём работ.

УровеньДля каких приложенийЧто добавляется к скоупу
MASVS-L1Все мобильные приложенияБазовые контроли: хранение, крипто, сеть, платформа, код
MASVS-L2Финтех, здравоохранение, PIIThreat model, глубокая аутентификация, усиленная криптография
MASVS-RIP-защита, высокорисковый клиентОбфускация, anti-tamper, anti-debug, root-детект

По данным Zimperium, MASVS-L1 рекомендуется как baseline для любого мобильного приложения. MASVS-L2 применяется, когда возможные потери от компрометации значительно превышают стоимость внедрения расширенных контролей безопасности. MASVS-R релевантен для финансовых приложений, игровых клиентов и приложений с интеллектуальной собственностью.

Решение об уровне принимает владелец продукта, но пентестер обязан объяснить последствия. Если клиент заказал L1 для мобильного банка - результат формально корректен, но бесполезен. Всё равно что проверить замки на двери, проигнорировав открытое окно на первом этаже.

Рекомендация: в scope-документе фиксировать уровень явно. Если клиент не определился - предлагать L1+R для финтеха, L1 для всего остального. L2 без L1 не имеет смысла: он расширяет базовый уровень, а не заменяет.

MASVS v1.5.0 в мобильном пентесте: от стандарта к рабочему чеклисту​

1780133115536.webp

OWASP предоставляет MAS Checklist - табличный документ, связывающий контроли MASVS с тест-кейсами MASTG. На engagement этот чеклист - основа отчёта: контроль, тест, результат, доказательство.

Рабочий процесс верификации безопасности мобильных приложений:
  1. Зафиксировать целевой уровень (L1/L2/R) в scope-документе с указанием версии MASVS
  2. Скачать MAS Checklist с mas.owasp.org - версия привязана к конкретным коммитам MASVS и MASTG
  3. Развернуть окружение: рутованный Android-эмулятор или jailbroken iOS, Burp Suite с CA, Frida, objection, jadx, MobSF
  4. Проходить группу за группой, выполняя тест-кейсы MASTG
  5. Фиксировать проваленные контроли с доказательствами - скриншот, лог Frida, перехваченный запрос
Частая ошибка - попытка закрыть весь MASVS одним инструментом. MobSF покрывает статику (MASVS-CODE, частично STORAGE и CRYPTO), но не видит рантайм. Frida и objection нужны для проверки STORAGE, CRYPTO, NETWORK и RESILIENCE в динамике. Burp Suite - для NETWORK и AUTH. Полная верификация требований MASVS требует комбинации минимум трёх-четырёх инструментов. Перед стартом я обычно рисую табличку «инструмент -> группа контролей» - экономит пару часов над проектом.

Переход на MASVS v2.0.0: что меняется для мобильного пентестера​

MASVS v2.0.0 - не инкрементальный патч, а пересборка с нуля. Ключевые изменения, описанные со-лидером проекта MAS Карлосом Хольгерой в интервью NowSecure:

MASVS-ARCH удалена. Группа «Architecture, Design and Threat Modeling» содержала контроли, непроверяемые при внешнем тестировании. Для пентестера - плюс: меньше строк с «N/A» в отчёте. Наконец-то.

Оверлапы с ASVS устранены. Бэкенд-контроли вынесены из скоупа. MASVS v2.0 фокусируется строго на клиентской стороне мобильного приложения.

Контроли переформулированы. Каждый начинается с «The app...», используется позитивная формулировка. Терминология приведена к стандартам NIST-SP 800-175B и CWE. Цель - убрать неоднозначность: одинаковая формулировка должна одинаково интерпретироваться разными тестировщиками. На бумаге - красиво. Посмотрим, как это будет работать, когда два пентестера прочитают один контроль и всё равно поймут его по-разному.

Уровни L1/L2/R убраны. Замена - MAS Testing Profiles в MASWE. На практике это переход от «пройти L1» к выбору набора weakness-паттернов. Пока MASTG v2.0.0 в разработке, MAS Checklist временно сохраняет старые уровни с привязкой к MASTG v1.

MASWE как новое звено. OWASP MASWE - перечень мобильных слабостей, аналог CWE, но для мобильных платформ. Он становится мостом: MASVS определяет «что», MASWE описывает «какие слабости», MASTG показывает «как проверять».

Для пентестера переходный период создаёт неопределённость. MASTG v1.5.0 привязан к MASVS v1.5.0, а MASTG v2.0.0 ещё не завершён. Рабочая стратегия: в scope-документе указывать версию стандарта явно - не «по OWASP MASVS», а «по OWASP MASVS v1.5.0». Защищает обе стороны от путаницы при смене версий.

Девять из десяти клиентов, которые просят «проверить по MASVS», не различают L1 и L2 и не имеют threat model для приложения. Они увидели аббревиатуру в требованиях регулятора или конкурента и включили её в ТЗ. Пентестер в этой ситуации становится переводчиком: объясняет, что MASVS-ARCH нельзя проверить извне, что половина AUTH-контролей - про бэкенд, и что RESILIENCE без threat model - бессмысленная трата бюджета.

Переход на v2.0.0 эту проблему не решит. Убрав уровни L1/L2/R, OWASP передаёт ответственность за формирование скоупа клиенту. В теории правильно - не все банковские приложения одинаково критичны. На практике - клиент без threat model теряет даже «L1» как отправную точку и приходит к пентестеру с MASWE-списком из сотен weakness: «а что из этого нам надо?».

Мой подход - не ждать, пока клиент разберётся в MAS Testing Profiles. Формировать скоуп самостоятельно на pre-engagement этапе, исходя из типа приложения, обрабатываемых данных и реальных угроз. MASVS - хороший чеклист, но плохая замена threat model. Пока индустрия не перестроится на v2.0.0, связка MASVS v1.5.0 + MASTG v1.5.0 остаётся тем инструментом, который стоит довести до автоматизма - потому что через год чеклист будет другим, а навык структурной верификации мобильного приложения останется. На WAPT эту связку разбирают на практике с реальными APK и лабами - если хочется не просто прочитать про контроли, а руками пройти весь цикл от objection до финального отчёта.
 
Последнее редактирование модератором:
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab