Практика
Пентест мобильного приложения iOS и Android
Пентест мобильного приложения iOS и Android: что проверяют по OWASP MASVS, этапы, сроки, что подготовить и сколько это стоит в Беларуси — от 20 300 BYN.
Коротко. Пентест мобильного приложения — это ручная проверка iOS- и Android-приложения вместе с его серверной частью (API) по методике OWASP MASVS/MASTG: как приложение хранит данные на устройстве, как общается с сервером, как проверяет пользователя, что можно вытащить из него после декомпиляции и что произойдёт на взломанном (root/jailbreak) телефоне. Результат — отчёт с подтверждёнными уязвимостями, приоритетами и планом исправлений. У Viviar аудит защищённости одного продукта с разбором кода стоит от 20 300 BYN; полный пентест мобильного приложения с API считается по объёму после получасового разговора.
Статья для продуктовых руководителей, CTO и владельцев бизнеса, у которых есть или готовится к выпуску мобильное приложение — банковское, торговое, медицинское, для сотрудников.
Чем мобильный пентест отличается от проверки сайта
Веб-приложение живёт на вашем сервере: вы контролируете среду, а пользователь видит только то, что отдал браузер. Мобильное приложение — наоборот: его копия лежит на каждом телефоне, и атакующий может разобрать её у себя на столе без ограничений по времени. Отсюда три отличия.
- Код доступен атакующему. APK или IPA можно скачать, декомпилировать и прочитать: ключи API, адреса тестовых серверов, логику проверки подписки, зашитые пароли.
- Данные лежат на устройстве. Кэш, локальные базы, логи, снимки экрана в переключателе задач, буфер обмена, резервные копии — всё это места, где остаются токены и персональные данные.
- Среда не доверена. Телефон может быть с root/jailbreak, с подменённым сертификатом, с отладчиком, с оверлеем поверх экрана ввода PIN.
При этом серверная часть остаётся: значительная доля критичных находок в мобильных проектах — это уязвимости API, к которым приложение просто даёт удобный путь. Поэтому мобильный пентест почти всегда включает проверку API по методике веб-приложений.
Методика: OWASP MASVS и MASTG
Отраслевой стандарт для мобильных приложений — два документа OWASP:
- MASVS (Mobile Application Security Verification Standard) — перечень требований к безопасности приложения, сгруппированных по областям: хранение данных (STORAGE), криптография (CRYPTO), аутентификация (AUTH), сеть (NETWORK), взаимодействие с платформой (PLATFORM), качество кода (CODE), устойчивость к реверс-инжинирингу (RESILIENCE), приватность (PRIVACY).
- MASTG (Mobile Application Security Testing Guide) — руководство, как каждое требование проверять на практике: инструменты, техники, примеры для iOS и Android.
Если подрядчик не может сказать, по какому профилю MASVS проверяет и какие группы требований не вошли в объём, — сравнить предложения вы не сможете. Профиль зависит от приложения: корпоративному каталогу достаточно базового уровня, банковскому или медицинскому приложению нужны расширенный уровень и проверка устойчивости к реверс-инжинирингу. Команда наступательной безопасности Viviar фиксирует профиль и исключения в договоре до старта.
Что именно проверяют: по областям MASVS
| Область | Что ищем | Типичная находка |
|---|---|---|
| Хранение данных | токены, пароли, персональные данные в незашифрованных файлах, логах, бэкапах, буфере обмена | сессионный токен в SharedPreferences / plist без шифрования |
| Криптография | самодельные алгоритмы, устаревшие режимы, ключи в коде | ключ шифрования базы зашит в APK |
| Аутентификация и сессии | обход биометрии, бесконечные сессии, слабые PIN, отсутствие проверки на сервере | биометрия проверяется только в интерфейсе, сервер не участвует |
| Сеть | отсутствие или обход certificate pinning, доверие любым сертификатам, открытые HTTP-запросы | трафик читается через перехватывающий прокси с пользовательским CA |
| Платформа | небезопасные deep link, экспортированные компоненты Android, утечки через WebView, лишние разрешения | экспортированная Activity открывает экран без авторизации |
| Код | устаревшие библиотеки, отладочные функции в релизе, отключённые защиты компилятора | тестовый эндпоинт с доступом к данным остался в продуктиве |
| Устойчивость | работа на root/jailbreak, отладка, подмена функций во время выполнения, отсутствие обфускации | логика проверки подписки переписывается «на лету» |
| Приватность | сбор данных сверх заявленного, передача сторонним SDK | аналитический SDK получает номер телефона пользователя |
| Серверная часть (API) | авторизация на уровне объектов, лимиты запросов, инъекции | чужой заказ открывается по подмене ID в запросе |
iOS и Android: где разница
Принципы одни, инструменты и типичные ошибки разные. Android — открытая платформа: приложение проще декомпилировать, больше точек входа (Activity, Service, Broadcast Receiver, Content Provider), больше вариантов прошивок. iOS — закрытая: сложнее получить jailbreak-устройство под нужную версию, но разработчики чаще излишне доверяют платформе — например, хранят данные в Keychain с неверным классом доступа или полагаются на Face ID без серверной проверки. Если у вас оба клиента, проверять нужно оба: одна и та же функция часто реализована разными командами по-разному.
Как проходит проверка: этапы
- Определение объёма. Какие приложения (iOS, Android, версии), какой API, какие роли пользователей, что нельзя трогать (продуктив с реальными платежами, партнёрские системы). Фиксируется в договоре вместе с окном тестирования и правилами остановки.
- Доступы. Сборки для тестирования — лучше без обфускации и с отладочными символами («серый ящик» находит больше за то же время), тестовые учётные записи под каждую роль, тестовый контур API. При «белом ящике» — исходный код.
- Статический анализ. Декомпиляция, поиск секретов, разбор манифеста и конфигурации, разбор используемых библиотек и их известных уязвимостей.
- Динамический анализ. Приложение запускается на подготовленных устройствах и эмуляторах: перехват трафика, инструментирование во время выполнения, обход pinning и проверок root/jailbreak, попытки вмешаться в логику.
- Тестирование API. Авторизация, бизнес-логика, лимиты, обработка ошибок — то, к чему приложение является только клиентом.
- Отчёт и разбор. Каждая находка с шагами воспроизведения, доказательством, оценкой критичности по CVSS и рекомендацией. Отдельно — резюме для руководства. Как читать такой документ — в отдельной статье.
- Ретест. После исправлений — повторная проверка закрытых пунктов.
По срокам ориентируйтесь на 2–4 недели для одного приложения с API среднего размера; два клиента и большая серверная часть — дольше.
Сколько стоит пентест мобильного приложения
Цена определяется числом платформ, размером API, глубиной (профиль MASVS) и форматом. Публичные ориентиры Viviar, действующие с 1 сентября 2026 года (нижняя граница, минимальная конфигурация):
| Формат | Что входит | Цена |
|---|---|---|
| Аудит защищённости одного продукта (пакет «Запуск безопасной разработки») | разбор кода и приложения, что и как чинить по шагам | от 20 300 BYN |
| То же с внедрением проверок в сборку | SAST/DAST/SCA в CI, чтобы новые версии проверялись автоматически | от 43 600 BYN |
| Полный пентест мобильного приложения (iOS + Android + API) | по согласованному объёму и профилю MASVS | индивидуально |
| ИБ-сопровождение | регулярная проверка новых релизов, сканирование зависимостей | от 5 200 BYN/мес |
Для продуктов, которые Viviar разрабатывает сама, проверка безопасности входит в пакеты разработки — например, в MVP-Стартер (от 14 500 BYN): по принципу «сначала на себе» команда проверяет то, что сделала. Подробнее о ценообразовании — из чего складывается стоимость пентеста; все пакеты — на странице цен.
Чек-лист: что подготовить до старта
- сборки iOS и Android для тестирования (не из магазина), по возможности без обфускации;
- тестовые учётные записи под каждую роль: клиент, оператор, администратор;
- тестовый контур API или согласованное окно на продуктиве;
- список того, что трогать нельзя: реальные платежи, SMS-шлюз, партнёрские интеграции;
- документация по API (OpenAPI/Swagger), схема архитектуры — если есть;
- контакт разработчика, который ответит на вопросы в течение дня;
- решение, кто получает отчёт и кто отвечает за исправления;
- предыдущие отчёты и результаты автоматического сканирования — чтобы не платить за уже известное.
Типичные ошибки заказчика
Проверять только клиент. Самые дорогие инциденты — утечки через API: приложение чистое, а сервер отдаёт чужие данные по подмене идентификатора.
Ставить обфускацию вместо исправлений. Обфускация замедляет атакующего, но не убирает уязвимость; зашитый в код ключ остаётся ключом.
Тестировать один раз перед релизом. Каждый релиз — новые экраны, новые библиотеки. Разумный минимум: полная проверка раз в год и после крупных изменений, автоматическое сканирование зависимостей — на каждой сборке.
Забывать про 99-З. Если приложение обрабатывает персональные данные, вы — оператор по Закону № 99-З, и меры защиты (ст. 17) — ваша обязанность; пентест — одно из подтверждений, что они приняты. Что ещё требуется от оператора — в статье о требованиях 99-З.
Частые вопросы
Нужен ли пентест, если приложение прошло проверку App Store и Google Play?
Да. Модерация магазинов проверяет соответствие правилам платформы и отсутствие вредоносного поведения, а не защищённость ваших данных и вашего API. Приложение с открытым токеном в коде и API без авторизации пройдёт публикацию без замечаний — и будет уязвимо в день выхода.
Можно ли проверить приложение без исходного кода?
Можно: сборку декомпилируют и анализируют как «чёрный» или «серый ящик» — так делает реальный атакующий. Но доступ к коду (белый ящик) находит больше за то же время и обычно не стоит дороже, поэтому для собственных приложений его разумно предоставить под NDA.
Что делать, если приложение разработано на аутсорсе и подрядчик против проверки?
Право заказывать пентест собственного продукта у вас как у владельца; подрядчику важно заранее сообщить сроки и попросить сборки для тестирования. Хороший разработчик заинтересован в отчёте: он получает список исправлений с приоритетами, а не претензии после инцидента.
Сколько времени занимает пентест мобильного приложения?
Обычно 2–4 недели для одного приложения с API среднего размера: неделя — статический и динамический анализ клиента, неделя — API, остальное — отчёт, разбор и ретест. Точный срок зависит от числа платформ, ролей и размера серверной части и фиксируется в договоре.
Достаточно ли автоматического сканера для мобильного приложения?
Сканер полезен как регулярная гигиена: найдёт устаревшие библиотеки, открытые компоненты, часть проблем с хранением данных. Но он не обойдёт pinning, не подменит логику во время выполнения и не заметит, что сервер отдаёт чужой заказ по подмене ID. Для запуска и ежегодной проверки нужна ручная работа.
Вывод
Пентест мобильного приложения — это проверка трёх слоёв: кода, который лежит у атакующего на столе, данных на устройстве и API, к которому приложение даёт путь. Методика — OWASP MASVS/MASTG, результат — подтверждённые находки с приоритетами. Ориентир по цене у Viviar — от 20 300 BYN за аудит одного продукта, полный проект — по объёму. Опишите приложение и что оно обрабатывает — назовём объём и сумму после получасового разговора.
Источники: OWASP MASVS и OWASP MASTG — проект OWASP Mobile Application Security (owasp.org); OWASP Mobile Top 10 (owasp.org); OWASP API Security Top 10 (owasp.org); CVSS v4.0 (first.org); Закон Республики Беларусь от 07.05.2021 № 99-З «О защите персональных данных» (pravo.by); цены — публичные пакеты Viviar, /pricing, действуют с 01.09.2026.