TrustManager の実装が安全でないアプリの修正方法

この情報は、X509TrustManager インターフェースの実装が安全ではないアプリのデベロッパーを対象としています。

状況

1 つ以上のアプリに、X509TrustManager インターフェースの安全でない実装が含まれています。この実装では特に、リモートホストへの HTTPS 接続時に SSL 証明書の検証エラーがすべて無視されるため、アプリで中間者攻撃に対する脆弱性が発生しています。攻撃者は、送信データ(ログイン認証情報など)を読み取ったり、HTTPS 接続で送信されたデータを変更したりする可能性があります。下記の手順詳細を確認して、アプリの問題を解決してください。Play Console に表示された期限を過ぎてもセキュリティの脆弱性が修正されていないアプリは、Google Play から削除される場合があります。

必要な対応

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

 

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

その他の詳細

SSL 証明書の検証を適切に処理するには、カスタム X509TrustManager インターフェースの checkServerTrusted メソッド内のコードを変更して、サーバーからの証明書が不十分なときに CertificateException または IllegalArgumentException が生成されるようにしてください。特に、次の注意事項をご確認ください。

  1. checkServerTrusted によって出力される例外がメソッド内で検出されないことを確認します。これにより、checkServerTrusted が正常に終了し、アプリが有害な証明書を信頼するようになります。
  2. サーバー証明書を審査する目的で checkValidity を使用しないでください。checkValidity は、証明書が期限切れになっていないかどうかを確認するもので、証明書が信頼できないかどうかは判断できません。

また、ネットワーク セキュリティ構成を使用して、アプリの証明書の動作をエラーが発生しにくいようにカスタマイズすることもできます。

サポートのご案内

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

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