MASTG-TEST-0204 安全でないランダム API の使用 (Insecure Random API Usage)

概要

Android アプリは、安全でない 擬似乱数生成器 (PRNG) を使用することがあります。たとえば、java.util.Random は線形合同法生成器であり、任意のシード値に対して予測可能なシーケンスを生成します。その結果、java.util.RandomMath.random() (後者 は静的 java.util.Random インスタンスの nextDouble() を呼び出すだけです) は、同じシードが使用されるたびに、すべての Java 実装において再現可能なシーケンスを生成します。この予測可能性により、暗号化や他のセキュリティが重要なコンテキストには適さなくなります。

一般的に、PRNG は暗号論的に安全であると明記されていない場合、ランダム性が予測不可能でなければならない場所では使用すべきではありません。詳細については Android ドキュメント および "乱数生成" ガイド を参照してください。

手順

  1. アプリに対して静的解析 (Android での静的解析 (Static Analysis on Android)) ツールを実行して、安全でないランダム API を探すか、メソッドトレース (Method Tracing) を使用してそのような API の使用を検出します。

  2. 特定された API の使用ごとに、セキュリティ関連コンテキストで使用されているかどうかをチェックします。アプリを逆コンパイル (Java コードの逆コンパイル (Decompiling Java Code)) し、コードを検査 (逆コンパイルされた Java コードのレビュー (Reviewing Decompiled Java Code)) して確認できます。

結果

出力には安全でないランダム API が使用されている場所のリストを含む可能性があります。

評価

パスワードや認証トークンの生成など、セキュリティ関連コンテキストにそのような API を使用して生成された乱数を見つけることができた場合、そのテストケースは不合格です。

Last updated

Was this helpful?