Мобильные приложения становятся основной поверхностью атаки для утечек данных и мошенничества. IBM Cost of a Data Breach Report 2023 показал, что средняя стоимость мобильной утечки данных составляет $4,45 миллиона — рост на 15% за три года. OWASP Mobile Security Testing Guide (MSTG) выявляет критические уязвимости в iOS и Android приложениях, где небезопасное хранение данных и ненадлежащая аутентификация стабильно занимают первые места. Отчёт NowSecure 2023 показал, что 83% протестированных мобильных приложений имели как минимум одну уязвимость безопасности. Это руководство охватывает статический анализ (MobSF), динамический анализ (Frida, Burp Suite) и техники пентеста для мобильных платформ.
TL;DR: Тестирование безопасности мобильных приложений следует фреймворку OWASP MSTG: тестируй небезопасное хранение данных, ненадлежащую аутентификацию, небезопасные сетевые коммуникации (обход SSL pinning, MITM), уязвимости кода и платформо-специфичные проблемы.
Основы Тестирования Безопасности Мобильных Приложений
Тестирование безопасности мобильных приложений валидирует защиту данных, безопасную коммуникацию, аутентификацию и устойчивость к обратной разработке.
OWASP Mobile Top 10
- Improper Platform Usage
- Insecure Data Storage
- Insecure Communication
- Insecure Authentication
- Insufficient Cryptography
“Mobile security testing is the discipline where you think like an attacker, not a tester. The question isn’t whether your app follows the happy path — it’s whether it survives someone actively trying to break it.” — Yuri Kan, Senior QA Lead
Тестирование Безопасности iOS
Небезопасное Хранение Данных (iOS)
// НЕБЕЗОПАСНО: UserDefaults (открытый текст)
UserDefaults.standard.set("token", forKey: "auth_token")
// БЕЗОПАСНО: Keychain
func saveToKeychain(key: String, value: String) {
let query: [String: Any] = [
kSecClass as String: kSecClassGenericPassword,
kSecAttrAccount as String: key,
kSecValueData as String: value.data(using: .utf8)!
]
SecItemAdd(query as CFDictionary, nil)
}
Certificate Pinning (iOS)
func urlSession(
_ session: URLSession,
didReceive challenge: URLAuthenticationChallenge,
completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void
) {
let pinnedHash = "sha256_hash"
let serverHash = serverCertificateData.sha256()
if serverHash == pinnedHash {
completionHandler(.useCredential, URLCredential(trust: serverTrust))
}
}
Тестирование Безопасности Android
Небезопасное Хранение (Android)
// НЕБЕЗОПАСНО: SharedPreferences
val prefs = getSharedPreferences("prefs", MODE_PRIVATE)
prefs.edit().putString("token", "sensitive").apply()
// БЕЗОПАСНО: EncryptedSharedPreferences
val masterKey = MasterKey.Builder(context)
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
.build()
val encryptedPrefs = EncryptedSharedPreferences.create(
context, "secure_prefs", masterKey,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
Тестирование с Frida
# Установить Frida
pip install frida-tools
# Список приложений
frida-ps -U
# Обход обнаружения root
frida -U -l bypass-root.js -f com.example.app
Статический Анализ
# Декомпиляция APK
apktool d app.apk
# Поиск hardcoded секретов
grep -r "api_key" decompiled/
Заключение
Тестирование безопасности мобильных приложений требует платформо-специфичных знаний и специализированных инструментов. Комбинируя статический анализ, динамическое тестирование и runtime манипуляцию, QA-инженеры могут идентифицировать уязвимости до того, как их эксплуатируют атакующие.
Смотрите также
- Mobile Testing 2025: iOS, Android и Далее - Полное руководство по современной экосистеме mobile testing
- API Security Testing - Техники безопасности для REST и GraphQL API
- OAuth и JWT в Mobile Testing - Валидация потоков аутентификации
- Mobile Payment Testing - Тестирование мобильных платежей и цифровых кошельков
- Appium 2 Architecture и Cloud - Мобильная автоматизация в облаке
Официальные ресурсы
FAQ
Что такое OWASP Mobile Top 10?
OWASP Mobile Top 10 включает: M1 Ненадлежащее использование учётных данных, M2 Небезопасность цепочки поставок, M3 Небезопасная аутентификация, M4 Недостаточная валидация ввода/вывода, M5 Небезопасная коммуникация, M6 Неадекватный контроль приватности, M7 Недостаточная защита бинарных файлов, M8 Неверная конфигурация безопасности, M9 Небезопасное хранение данных, M10 Недостаточная криптография.
Как тестировать небезопасное хранение данных?
Проверяй базы данных SQLite, логи приложения (adb logcat на Android), файлы SharedPreferences и локальное хранилище в WebView. Используй MobSF для автоматизированного статического анализа. На iOS проверяй файловую систему с джейлбрейком на наличие конфиденциальных данных.
Как тестировать SSL certificate pinning?
Попытайся выполнить MITM-атаки с помощью Burp Suite с установленным на устройстве прокси-сертификатом. Если SSL pinning работает, запросы провалятся с ошибками валидации сертификата. Используй Frida для обхода pinning: скрипты типа ‘ssl-kill-switch2’ могут отключить pinning на jailbroken устройствах.
Какие инструменты необходимы для тестирования безопасности?
Необходимый набор: MobSF (статический и динамический анализ), Frida (динамическая инструментация), Burp Suite (перехват трафика), adb (Android Debug Bridge), Drozer (безопасность между приложениями Android) и Objection (исследование во время выполнения без jailbreak).
See Also
- API Security Testing: Полное Руководство по OAuth, JWT и API Keys
- Security Headers Testing: Защита Веб-Приложений - Валидация заголовков безопасности: CSP, HSTS, X-Frame-Options, инструменты…
- Тестирование безопасности API: OAuth потоки, валидация JWT,…
- Burp Suite для QA-Инженеров: Полное Руководство по Security Testing - Security testing с Burp: настройка proxy, scanner, intruder,…
- Load Testing с JMeter: Полное Руководство - Освоение Apache JMeter: thread groups, samplers, listeners,…
- Grafana и Prometheus: Полный Stack Мониторинга Производительности - Stack мониторинга: сбор метрик с Prometheus, дашборды Grafana,…
