Стандартная программа отбора использует предсказуемый seed, делающий предсказуемый выход
Этот дефект происходит, когда вы используете стандартные функции генератора случайных чисел с непостоянным, но предсказуемым seed. Примерами предсказуемых генераторов seed является time
, gettimeofday
, и getpid
.
Средство проверки обнаруживает эту проблему со следующими функциями генератора случайных чисел:
C Стандартные Библиотечные функции, такие как srand
, srandom
и initstate
Библиотечные функции Стандарта C++, такие как std::linear_congruential_engine<>::seed()
и std::mersenne_twister_engine<>::seed()
(и также конструкторы этих шаблонов классов)
Когда вы используете предсказуемые значения seed для генерации случайных чисел, ваши случайные числа также предсказуемы. Хакер может разрушить вашу программу, если они знают, как ваша программа ведет себя.
Можно использовать различную функцию, чтобы сгенерировать менее предсказуемые seed.
Можно также использовать различный генератор случайных чисел, который не требует seed. Например, API-функция Windows® rand_s
отбирает себя по умолчанию. Это использует информацию от целой системы, например, системное время, идентификаторы потока, системный счетчик и кластеры памяти. Эта информация более случайна, и пользователь не может получить доступ к этой информации.
Некоторые стандартные случайные стандартные программы по сути криптографически слабы, и не должны использоваться для целей безопасности.
Группа: безопасность |
Язык: C | C++ |
Значение по умолчанию: Off |
Синтаксис командной строки: RAND_SEED_PREDICTABLE |
Удар: Средняя |
ID CWE: 330, 337 |
Deterministic random output from constant seed
| Find defects (-checkers)
| Unsafe standard encryption function
| Vulnerable pseudo-random number generator