Процедура посева использует постоянное начальное число, делающее вывод детерминированным
Этот дефект возникает при использовании стандартных функций генератора случайных чисел, которые имеют детерминированный выход с постоянным начальным числом.
Средство проверки обнаруживает эту проблему со следующими функциями генератора случайных чисел:
Стандартные библиотечные функции C, такие как srand, srandom и initstate
Функции OpenSSL, такие как RAND_seed и RAND_add
Стандартные библиотечные функции C++, такие как std::linear_congruential_engine<>::seed() и std::mersenne_twister_engine<>::seed() (а также конструкторы этих шаблонов классов)
С постоянными начальными числами функции генератора случайных чисел производят один и тот же выходной сигнал при каждом запуске программы. Хакер может нарушить работу вашей программы, если он знает, как ведет себя ваша программа.
Используйте другую случайную стандартную функцию или несвязанное начальное число.
Некоторые стандартные случайные процедуры по своей сути являются криптографически слабыми и не должны использоваться в целях безопасности.
| Группа: Безопасность |
| Язык: C | C++ |
| По умолчанию: Откл. |
Синтаксис командной строки: RAND_SEED_CONSTANT |
| Воздействие: среднее |
| CWE ID: 330, 336 |
Find defects (-checkers) | Predictable random output from predictable seed | Unsafe standard encryption function | Vulnerable pseudo-random number generator