CERT.MSC.SEED_RANDOM
疑似乱数ジェネレータは適切にシードしてください。
このチェッカーは、srandom() の呼び出しでシードされていない random() 呼び出しを強調表示します。
脆弱性とリスク
明示的にシードせずに、または同じ値でシードすることによって、同じ初期状態で疑似乱数ジェネレータを呼び出すと、プログラムを複数回実行しても同じ乱数シーケンスが生成されます。
脆弱コード例
void func(void) { for (unsigned int i = 0; i < 10; ++i) { /* 常に同じシーケンスを生成します */ printf("%ld, ", random()); } }
この非準拠コード例は、random() 関数を使用して 10 個の疑似乱数のシーケンスを生成します。シードされていない random() は rand() のように振る舞い、この関数を使用するプログラムが実行されるたびに同じ乱数シーケンスを生成します。