HostnameVerifier の脆弱性の問題を回避する方法

この情報は、実装が安全でない HostnameVerifier インターフェースをアプリで使用しているデベロッパーを対象としています。このインターフェースでは、setDefaultHostnameVerifier API でリモートホストに HTTPS 接続する際にすべてのホスト名を許可してしまうため、アプリが中間者攻撃を受けやすくなります。攻撃者は、送信データ(ログイン認証情報など)を読み取ったり、HTTPS 接続で送信されたデータを変更したりする可能性があります。

状況

2017 年の 3 月 1 日以降、Google Play では実装が安全でない HostnameVerifier を使用するすべての新規アプリおよびアップデートの公開がブロックされるようになりました。詳しくは Play Console の通知をご覧ください。Play Console に表示されている期限を過ぎた後もセキュリティの脆弱性が修正されていないアプリは、Google Play から削除される可能性があります。

必要な対応

  1. Play Console にログインし、[アラート] セクションで該当するアプリや問題の解決期限を確認します。
  2. 該当のアプリを更新し、脆弱性を修正します。
  3. 該当のアプリの更新バージョンを送信します。

再送信すると、アプリは再度審査されます。審査には数時間ほどかかることがあります。アプリが審査に合格して正常に公開された場合は、これ以上の対応は不要です。アプリが審査に不合格となった場合、アプリの更新バージョンは公開されず、メールで通知が届きます。

その他の詳細

ホスト名の検証を適切に行うには、HostnameVerifier カスタム インターフェースの verify メソッドを変更し、サーバーのホスト名が期待された値と異なる場合には必ず false を返すようにします。

なお、アプリはデベロッパー販売 / 配布契約コンテンツ ポリシーに準拠している必要があります。

サポートのご案内

脆弱性に関する技術的なご質問については、Stack Overflow にご投稿ください。その際、「android-security」タグをご利用ください。この問題を解決するための手順で不明な点がありましたら、デベロッパー サポートチームにお問い合わせください。

この情報は役に立ちましたか?
改善できる点がありましたらお聞かせください。