このセクションでは、Android デバイスからのネットワーク通信のセキュリティを確保するためのおすすめの方法を説明します。
リスニング ソケットを保護
リスニング ソケットは慎重に使用してください。通常、デバイスにはオープンなリスニング ソケットがありません。これは、そのようなソケットが遠隔からの攻撃者にとってはデバイスへのアクセス経路となるためです。
- 特に起動時やデフォルトでは Android デバイスが公開しているインターネット リスニング ソケットの数は最小限とします。起動時にはデフォルトでインターネット上でリッスンしているソケットがないようにしてください。
- root プロセス、およびシステム固有識別子(UID)のプロセスでリスニング ソケットを公開するべきではありません。
- リスニング ソケットは OTA アップデートがなくても無効にできる必要があります。これを行うには、サーバーまたはユーザー デバイスの構成を変更します。
- ローカルの IPC を使ったソケットでは、アプリは特定のグループにアクセスを限定した UNIX ドメインのソケットを使用する必要があります。IPC 用のファイル記述子を作成し、特定の UNIX グループに対して +RW にします。すべてのクライアント アプリはその UNIX グループに属している必要があります。
- 無線通信やモデムがアプリのプロセッサとは別になっているような、複数のプロセッサを搭載したデバイスではプロセッサ間の通信にネットワーク ソケットを利用するものもあります。そのような場合、プロセッサ間の通信に利用されるネットワーク ソケットでは分離したネットワーク インターフェースを使い、デバイス上の権限のないアプリによるアクセスを防ぎます(iptables を使用して、デバイス上の他のアプリによるアクセスを防ぎます)。
- リスニング ポートを処理するデーモンは、不正な形式のデータに対して堅牢である必要があります。許可されていないクライアントと、可能であれば許可されたクライアントを使用して、ポートに対してファズテストを行います。クラッシュ時のフォローアップのバグを報告します。
Android 互換性テストスイート(CTS)には、オープンになっているリスニング ポートの存在を確認するテストが含まれます。
adb を無効にする
Android Debug Bridge(adb)は重要な開発およびデバッグ用ツールですが、管理された安全な環境で使用することが想定されていますので、通常の使用時には有効にしないでください。
- adb がデフォルトで無効になっていることを確認します。
- 接続を承認する前に、ユーザーが adb をオンにする必要があることを確認します。