クリアテキスト / 平文の HTTP

OWASP カテゴリ: MASVS-NETWORK: ネットワーク通信

概要

Android アプリでクリアテキスト ネットワーク通信を許可すると、ネットワーク トラフィックを監視しているすべてのユーザーが、送信中のデータを表示して操作できるようになります。これは、送信されたデータにパスワード、クレジット カード番号、その他の個人情報などの機密情報が含まれている場合、脆弱性につながります。

機密情報を送信するかどうかにかかわらず、クリアテキストを使用すると脆弱性が発生する可能性があります。クリアテキストや平文の HTTP トラフィックが、ARP や DNS 汚染などのネットワーク ポイズニング攻撃で操作され、攻撃者によるアプリの動作の制御を可能にするためです。

影響

Android アプリがネットワーク経由でクリアテキストでデータを送受信すると、ネットワークを監視しているすべての人がそのデータを傍受して読み取れるようになります。このデータにパスワード、クレジット カード番号、個人メッセージなどの機密情報が含まれている場合、個人情報の盗難や金融詐欺などの重大な問題につながる可能性があります。

たとえば、アプリがクリアテキストでパスワードを送信すると、悪意のあるトラフィック傍受者に機密情報が漏洩する可能性があります。漏洩したデータは、ユーザーのアカウントへの不正アクセスに利用される可能性があります。

リスクの軽減

このセクションのガイダンスは、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 の変更によって、アプリで思わぬパフォーマンスの低下が発生するのを防ぐことができます。

参考資料