この情報は、安全性の低いモードの AES / ECB を採用している暗号化を含むアプリのデベロッパーを対象としています。この安全性の低いモードでコンテンツを暗号化すると、暗号テキストが脆弱になり、ユーザーデータが不正に使用される可能性があります。アプリでの安全性の低い暗号化モードの場所は、アプリの Google Play Console 通知で確認できます。「(動的に読み込まれたコード内)」で終わっている位置情報は、アプリまたはアプリで使用されるライブラリによって動的に読み込まれるコード内にあります。アプリは通常、オンデマンド機能配信を通じて動的に読み込まれたコードを使用しますが、推奨されない手法もあります(推奨されない手法の中には Google Play のポリシーに違反するものもあるため、使用しないことをおすすめします)。また、アプリケーション コードを動的に読み込まれるコードに変換することもできます。
「安全性の低い暗号化モード」の通知に対する修正方法
アプリで、Cipher がインスタンス化されている場所を確認します。安全性の低い AES / ECB の使用を伴う設定モードは以下のとおりです。
"AES"
"AES/ECB/NoPadding"
"AES/ECB/PKCS5Padding"
"AES/ECB/ISO10126Padding"
たとえば、以下のコードでは "AES" が指定されているため、デフォルトで AES / ECB モードが使用されます。
// Console 通知でこのメソッドを参照
public byte[] encryptionUtil(String key, String iv, byte[] plainText) {
Cipher cipher = Cipher.getInstance(“AES”); // デフォルトで AES/ECB モードを使用
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(), “AES”);
cipher.init(Cipher.ENCRYPT_MODE, keySpec, paramSpec);
cipher.init(Cipher.ENCRYPT_MODE, keySpec, paramSpec);
return cipher.doFinal(plainText);
}
前述の安全性の低いモードの代わりに “AES/GCM/NoPadding”
をご利用になることをおすすめします。
次のステップ
- 上記の手順に沿ってアプリを更新します。
- Play Console にログインして、アプリの更新版を送信します。
新しいアプリやアップデートは、リクエストの審査が終わるまでの間、公開待ちステータスになります。アプリが適切に更新されていない場合は、引き続き警告が表示されます。
サポートのご案内
この脆弱性に関する技術的な質問については、Stack Overflow に投稿してください。その際は、「android-security」タグを使用してください。