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