MASTG-TEST-0312 暗号 API での明示的なセキュリティプロバイダへの参照 (References to Explicit Security Provider in Cryptographic APIs)
概要
Java Cryptography Architecture (JCA) に基づく Android 暗号 API では開発者が getInstance メソッドを呼び出す際に セキュリティプロバイダ を指定できます。但し、最新のバージョンではいくつかのプロバイダが非推奨または削除されているため、プロバイダを明示的に指定するとセキュリティ上の問題を引き起こし、互換性を損なう可能性があります。以下に例を示します。
Android 9 (API レベル 28) 以上をターゲットとするアプリは プロバイダを指定すると失敗します。
Crypto プロバイダは Android 7.0 (API レベル 24) で非推奨となり、Android 9 (API レベル 28) で削除されました。
BouncyCastle プロバイダは Android 9 (API レベル 28) で非推奨となり、Android 12 (API level 31) で削除されました。
このテストは、JCA API を使用する際に、アプリがデフォルトのプロバイダである AndroidOpenSSL (Conscrypt) 以外のセキュリティプロバイダを明示的に指定するケースを識別します。これは積極的に保守されており、通常は使用する必要があります (セキュリティプロバイダ (Security Provider) 参照)。getInstance 呼び出しを検査し、KeyStore.getInstance("AndroidKeyStore") などの正当な例外を除き、名前付きプロバイダの使用をフラグ付けします。
手順
アプリバイナリに対して semgrep などのツールで Android での静的解析 (Static Analysis on Android) を実行して、セキュリティプロバイダを明示的に指定する
getInstanceの呼び出しを探します。
結果
出力には getInstance 呼び出しでセキュリティプロバイダが明示的に指定されている場所のリストを含む可能性があります。
評価
getInstance 呼び出しが KeyStore 操作に対して AndroidKeyStore 以外のセキュリティプロバイダを明示的に指定している場合、そのテストケースは不合格です。各発生箇所をレビューし、プロバイダが実際に必要とされているかどうか、また、その使用が最新の Android バージョンでセキュリティまたは互換性の問題をもたらす可能性があるかどうかを判断します。
Last updated
Was this helpful?