Открытый текст

Категория OWASP: MASVS-NETWORK: Сетевая связь

Обзор

Разрешение сетевых коммуникаций в открытом виде в приложении Android означает, что любой, кто отслеживает сетевой трафик, может видеть и манипулировать передаваемыми данными. Это уязвимость, если передаваемые данные включают конфиденциальную информацию, такую ​​как пароли, номера кредитных карт или другую личную информацию.

Независимо от того, отправляете ли вы конфиденциальную информацию или нет, использование открытого текста все равно может быть уязвимостью, поскольку трафиком открытого текста также можно манипулировать с помощью сетевых атак, таких как отравление ARP или DNS, что потенциально позволяет злоумышленникам влиять на поведение приложения.

Влияние

Когда приложение Android отправляет или получает данные в виде открытого текста по сети, любой, кто контролирует сеть, может перехватить и прочитать эти данные. Если эти данные включают конфиденциальную информацию, такую ​​как пароли, номера кредитных карт или личные сообщения, это может привести к краже личных данных, финансовому мошенничеству и другим серьезным проблемам.

Например, приложение, передающее пароли в открытом виде, может предоставить эти учетные данные злоумышленнику, перехватывающему трафик. Эти данные затем могут быть использованы для получения несанкционированного доступа к учетным записям пользователя.

Риск: незашифрованные каналы связи.

Передача данных по незашифрованным каналам связи раскрывает данные, совместно используемые устройством и конечными точками приложения. Указанные данные могут быть перехвачены и потенциально изменены злоумышленником.

Смягчения

Данные должны передаваться по зашифрованным каналам связи. Защищенные протоколы следует использовать в качестве альтернативы протоколам, не обеспечивающим возможности шифрования.

Конкретные риски

В этом разделе собраны риски, которые требуют нестандартных стратегий смягчения или были устранены на определенном уровне SDK и приведены здесь для полноты картины.

Риск: HTTP

Рекомендации в этом разделе применимы только к приложениям, предназначенным для Android 8.1 (уровень API 27) или более ранних версий. Начиная с Android 9 (уровень API 28), поддержка открытого текста отключена по умолчанию.

Смягчения

Используйте функцию NetworkSecurityConfig.xml , чтобы отказаться от трафика открытого текста:

XML

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">secure.example.com</domain>
    </domain-config>
</network-security-config>

Этот параметр помогает предотвратить случайные регрессии в приложениях из-за изменений URL-адресов, предоставленных внешними источниками, такими как внутренние серверы.


Риск: FTP

Использование протокола FTP для обмена файлами между устройствами сопряжено с рядом рисков, наиболее существенным из которых является отсутствие шифрования канала связи. Вместо этого следует использовать более безопасные альтернативы, такие как SFTP или HTTPS.

Рекомендации в этом разделе применимы только к приложениям, предназначенным для Android 8.1 (уровень API 27) или более ранней версии. Начиная с Android 9 (уровень API 28), поддержка открытого текста отключена по умолчанию.

Смягчения

Используйте HTTPS

Этот протокол шифрует передаваемые данные. При использовании такого протокола обмена файлами следует принять во внимание дополнительные меры:

  • Аутентификация. Пользователи должны аутентифицировать себя, используя безопасные механизмы. Базовая аутентификация обычно не рекомендуется, поскольку учетные данные не защищены и отправляются в каждом запросе, что увеличивает риск компрометации.
  • Авторизация. Пользователям должен быть ограничен доступ только к предполагаемым ресурсам.
  • Убедитесь, что используются надежные протоколы и наборы шифров, следуя рекомендациям по обеспечению безопасности. На момент написания рекомендуется использовать как минимум протокол TLSv1.3 .
  • В Android 9 и более поздних версиях HTTP-связь в открытом виде отключена по умолчанию, что обеспечивает автоматическое применение HTTPS.
Ресурсы
Используйте SFTP

Этот протокол шифрует передаваемые данные. При использовании такого протокола обмена файлами следует принять во внимание дополнительные меры:

  • SFTP поддерживает различные виды аутентификации. Вместо аутентификации на основе пароля следует использовать метод аутентификации с открытым ключом. Такие ключи следует безопасно создавать и хранить, для этой цели рекомендуется использовать Android Keystore .
  • Убедитесь, что поддерживаемые шифры соответствуют лучшим практикам безопасности.
Ресурсы

Ресурсы