Обнаружены «внутренние домены», заданные для поиска
Описание
При статическом анализе распакованного IPA-файла были обнаружены URL-строки, совпадающие с паттернами «внутренних доменов», заданными пользователем в конфигурации модуля поиска ссылок. Это значит, что внутренняя или тестовая адресация (например, https://staging.company.internal/api
) осталась в релиз-сборке для App Store / TestFlight.
Присутствие таких доменов в опубликованном приложении ведёт к рискам:
- Раскрытие внутренней инфраструктуры (названия хостов, микросервисов, подсетей).
- Удалённый доступ к незащищённым средам: staging-сервера могут быть доступны из-вне и содержать менее жёсткие политики безопасности.
- Утечка логики и данных через обращения к внутренним API без полноценных механизмов авторизации.
- Подмена ответов (MITM) — внутренние домены часто не имеют валидного публичного TLS-сертификата; злоумышленник может эмулировать их.
Типовые точки обнаружения:
- Секции __TEXT / __cstring бинаря (
Mach-O
) со строками, совпадающими с заданными regex-паттернами. - Пакет ресурсов (
.plist
,.strings
,.json
,.yaml
) содержит ссылки на*.internal*.company
. -
Build-time переключатель окружений не отключён для схемы Release:
Рекомендации
-
Выстроить корректную систему конфигураций Xcode:
- Создайте отдельные build configuration files (
Prod.xcconfig
,Staging.xcconfig
) и храните URL-ы там, а не в коде. - Убедитесь, что целевая схема «Release» подключает только
Prod.xcconfig
.
- Создайте отдельные build configuration files (
-
Применять remote-config/feature flags:
- Для временных переключений окружений используйте Firebase Remote Config, LaunchDarkly, ConfigCat — это позволит динамически менять endpoints без пересборки и без рисков утечки строк.
-
Защищать строки в рантайме:
- Если внутренний домен обязан находиться в приложении (например, fallback-сервер), храните его зашифрованным, расшифровывайте в памяти, а ключ храните в Keychain / Secure Enclave.
- Это лишь усложняет извлечение строки, но не заменяет корректной конфигурации.
Ссылки
- OWASP MASVS — контроль MASVS-CODE-4 «Build, Environment & Code Quality»
- Apple Developer — «Adding a build configuration file to your project» (.xcconfig)
- Apple Developer — «NSAppTransportSecurity» (руководство по App Transport Security)
- Medium — «Ensuring Security for Secrets in iOS App Development»