Перейти к содержанию

Обнаружены «внутренние домены», доступные извне

Описание

При статическом анализе распакованного IPA-файла были обнаружены URL-строки, совпадающие с паттернами внутренних доменов (например, api.staging.company.internal). Проверка из публичной сети показала, что эти хосты резолвятся во внешний IP-адрес и отвечают на запросы. Это означает, что тестовое или staging-окружение опубликовано без VPN / ACL и при этом осталось в релизной сборке приложения. (Trend Micro)

Потенциальные последствия

  • Расширенная поверхность атаки. В staging-средах часто включены debug-эндпоинты и ослаблена аутентификация, поэтому их взлом значительно проще. (Trend Micro)
  • Утечка данных. Открытые логи, тестовые базы и Swagger-доки могут быть доступны без авторизации.
  • Переход на продакшн. Завладев staging-сервером, злоумышленник может использовать общие ключи, CI-секреты или туннели для атаки на production.
  • Несоответствие требованиям App Store и отраслевых стандартов (OWASP MASVS). (OWASP Mobile Security)

Рекомендации

  1. Разнести окружения через .xcconfig и схемы Xcode

    Создайте отдельные конфигурационные файлы и подключайте в нужной схеме; в релизе должен подставляться только продакшн-хост.

    // Prod.xcconfig
    BASE_URL = https://api.prod.company.com
    
    // Staging.xcconfig
    BASE_URL = https://api.staging.company.internal
    

    Подробно о добавлении .xcconfig — см. официальную документацию. (Apple Developer)

  2. Включить allow-list через App Transport Security (ATS)

    • Запретите NSAllowsArbitraryLoads.
    • Добавьте только продакшн-хосты в NSExceptionDomains; для staging-доменов не должно быть исключений.
    <key>NSAppTransportSecurity</key>
    <dict>
    <key>NSAllowsArbitraryLoads</key><false/>
    <key>NSExceptionDomains</key>
    <dict>
       <key>api.prod.company.com</key>
       <dict>
          <key>NSIncludesSubdomains</key><true/>
       </dict>
    </dict>
    </dict>
    

    Документация ATS/NSExceptionDomains. (Apple Developer)

  3. Закрыть staging-окружение от Интернета

    • Разрешайте доступ только через корпоративный VPN, Zero-Trust Access Proxy или IP allow-list. (Microsoft Learn)
    • Включайте mTLS или Basic Auth для аварийного доступа, чтобы поисковые сканеры не индексировали сервисы.
  4. Использовать приватные TLD и split-DNS

    Назначайте dev-зонам суффиксы .internal, .corp, .test, которые не резолвятся глобальными DNS-серверами.

Ссылки

  1. Trend Micro — Securing Application Staging & Production Environments (Trend Micro)
  2. Adding a build configuration file to your project (.xcconfig) (Apple Developer)
  3. NSAppTransportSecurity > NSExceptionDomains — Apple Developer Documentation (Apple Developer)
  4. OWASP MASVS — Testing Code Quality & Build Settings (OWASP Mobile Security)
  5. Microsoft Learn — Secure applications with Zero Trust (Microsoft Learn)
К началу