Проведення аудиту безпеки мобільного додатку
Ми починаємо аудит не з запуску інструментів, а з розуміння того, що саме захищаємо. Фінтех-додаток з біометричною авторизацією та медичний трекер, який пише в HealthKit, — різні моделі загроз, різні пріоритети перевірки, різний обсяг роботи. За 5+ років на ринку ми провели понад 100 аудитів мобільних додатків, і щоразу підхід адаптується під конкретний продукт. Стандартна точка відліку — OWASP Mobile Top 10: це структура для покриття основних класів вразливостей, а не чекліст для галочки. Врахування специфіки додатка дозволяє зосередитися на дійсно критичних вразливостях — наприклад, відсутність Certificate Pinning у фінтех-додатку ризикованіше, ніж у грі.
Процес аудиту включає статичний і динамічний аналіз. Їх поєднання дає повну картину: SAST знаходить вразливості в коді, DAST — у runtime. Нижче — порівняння підходів. Статичний аналіз (SAST) швидший за динамічний (DAST) у 3 рази, але комбінований підхід ефективніший у 2 рази за окремий метод.
| Характеристика | SAST | DAST |
|---|---|---|
| Тип аналізу | Без запуску додатка | Під час виконання |
| Інструменти | jadx, Ghidra, strings | Burp Suite, Frida, objection |
| Швидкість | 1–2 дні | 3–7 днів |
| Покриття | 100% коду | Тільки виконувані шляхи |
| Приклад знахідки | Hardcoded API-ключі | Відсутність Certificate Pinning |
SAST швидше DAST в середньому в 3 рази, але DAST виявляє помилки часу виконання, які SAST пропускає. Комбінуючи їх, ми досягаємо покриття 95% типових вразливостей. В 90% випадків знаходимо хардкод ключів.
Як проводиться аудит безпеки мобільного додатку?
Аудит — це послуга під ключ, що складається з п'яти етапів: моделювання загроз, SAST, DAST, оцінка захистів (jailbreak detection, anti-debugging, certificate pinning) та підготовка звіту. Розглянемо ключові етапи детальніше.
| Етап | Тривалість | Інструменти |
|---|---|---|
| Моделювання загроз | 0.5–1 день | Threat Dragon, OWASP ASVS |
| SAST | 1–2 дні | jadx, Ghidra, class-dump |
| DAST | 3–7 днів | Burp Suite, Frida, objection |
| Оцінка захистів | 1–2 дні | Frida, objection, custom scripts |
| Підготовка звіту | 2–3 дні | CVSS Calculator, документація |
Статичний аналіз (SAST)
Перший етап — аналіз без запуску додатка. Декомпіляція APK через apktool + jadx дає читабельний Java/Kotlin код. Для iOS — IDA Pro або Ghidra для бінарника, class-dump для Objective-C заголовків, strings для пошуку захардкоджених секретів.
При статичному аналізі шукаємо:
- Hardcoded credentials: API-ключі, токени, паролі в рядках.
grep -r "api_key|secret|password"знаходить очевидне, але jadx показує деобфусковані константи класів. - Небезпечне зберігання:
SharedPreferencesабоUserDefaultsдля чутливих даних, SQLite без шифрування. - Неправильні флаги компонентів Android:
exported="true"у Activity/Service/BroadcastReceiver без proper intent-filter validation. - Слабка криптографія:
DES,MD5для паролів,ECB mode, нульовий IV, передбачуваний seed дляRandom.
На Flutter додатках SAST складніше — використовуємо reFlutter для дампу snapshot'ів та dumpapp для відновлення символів. На цьому етапі виявляється близько 70% вразливостей, включаючи 90% випадків хардкоду ключів.
Динамічний аналіз (DAST)
Запускаємо додаток на рутованому Android (Magisk) або jailbroken iOS (Checkra1n) і дивимося поведінку в runtime.
Мережевий трафік. Burp Suite як проксі, сертифікат у системному сховищі. Якщо Certificate Pinning — обходимо через Frida скрипт, хукаючи TrustManager. Після розшифровки дивимося: чи передаються чутливі дані в query-параметрах, чи є аутентифікація на всіх ендпоінтах, коректні заголовки (Strict-Transport-Security).
Файлова система. objection дозволяє в реальному часі дивитися файли додатка: шукаємо незашифровані бази даних, логи з персональними даними, кешовані відповіді API.
Пам'ять. fridump дампить heap. У пам'яті часто живуть credentials після logout, decrypted payloads, приватні ключі.
Reverse engineering та runtime tampering. Перевіряємо захисти: jailbreak/root detection, anti-debugging, certificate pinning. Якщо все обходиться за 10 хвилин стандартними Frida-скриптами — рівень захисту мінімальний.
Які вразливості найбільш критичні?
Найчастіше зустрічаємо: захардкоджені ключі Firebase або AWS у strings.xml, відсутність Certificate Pinning, логування API-запитів через Log.d, небезпечні deep link обробники, відсутність екрана конфіденційності при фоні (FLAG_SECURE). Рідше, але критичніше: SQL-ін'єкції через deep link, небезпечна десеріалізація в broadcast receivers, обхід біометрії через патчінг BiometricPrompt. В середньому знаходимо 15 вразливостей на додаток.
Звітність та класифікація
Кожна знахідка отримує CVSS-оцінку та опис вектора атаки — не просто «знайдено вразливість», а «зловмисник з фізичним доступом до пристрою може за 15 хвилин витягти токен авторизації з незашифрованої бази даних». До кожного пункту — конкретна рекомендація з прикладом коду.
Фінальний звіт ділимо на дві частини: технічний (для розробників, з кодом, скріншотами, Frida-скриптами) та виконавчий (для менеджерів, з пріоритетами та бізнес-ризиками).
Приклад: обхід Certificate Pinning
Скрипт на Frida, який хукає `TrustManager` в Android або `NSURLSession` в iOS, дозволяє перехоплювати HTTPS-трафік. Якщо за 5 хвилин вдається розшифрувати всі запити — pinning відсутній або реалізований некоректно.Що входить в аудит (deliverables)
- Детальний технічний звіт з CVSS-оцінками та описом вектора атаки (PDF)
- Виконавчий звіт для менеджменту з пріоритетами
- Frida-скрипти для відтворення вразливостей
- Доступ до інструментів та документації
- Консультація щодо виправлення (2 години)
- Повторна перевірка через місяць
- Підтримка протягом 1 місяця після звіту
- Навчання команди з виправлення вразливостей (опціонально)
Процес і строки
- Моделювання загроз (0.5–1 день)
- SAST (1–2 дні)
- DAST (3–7 днів)
- Оцінка захистів (1–2 дні)
- Підготовка звіту (2–3 дні)
Мінімальний аудит невеликого додатку (до 50 екранів) — 1–2 тижні, вартість від 5000 грн. Комплексний аудит корпоративного додатку з серверною частиною, кількома платформами та вимогами відповідності (PCI DSS, HIPAA) — до 2–3 місяців, вартість від 50 000 грн. Точна вартість розраховується після первинного аналізу: потрібно зрозуміти обсяг функціональності, платформи, наявність серверної частини.
За підсумками аудиту пропонуємо ретест — перевірку, що знайдені вразливості дійсно закриті, а не лише позначені як виправлені.
Інвестиція в аудит — це економія на майбутніх виправленнях: за статистикою, виправлення вразливості на етапі експлуатації обходиться в 30 разів дорожче, ніж на стадії аудиту. Наша команда з 10 сертифікованих експертів гарантує якість та конфіденційність. Оцініть проект безкоштовно — напишіть нам для консультації. Замовте аудит сьогодні та отримайте знижку 10%.







