CWE-335БазаЧерновик
Некорректное использование начальных значений (seed) в генераторе псевдослучайных чисел (PRNG)
Продукт использует генератор псевдослучайных чисел (PRNG), однако некорректно управляет начальными значениями (seed).
Открыть в каталоге с фильтром CWE →Связанные CAPEC
—
Связанные уязвимости
CVE-2024-36048QAbstractOAuth в Qt Network Authorization в Qt до версий 5.15.17, 6.x до 6.2.13, 6.3.x до 6.5.x до 6.5.6 и 6.6.x до 6.7.x до 6.7.1 использует только время для заполнения PRNG, что может привести к угадываемым значениям.
CVE-2023-4472Objectplanet Opinio версии 7.22 и более ранних использует криптографически слабый генератор псевдослучайных чисел (PRNG) в сочетании с предсказуемым начальным значением, что может привести к несанкционированному захвату учетной записи любого пользователя в приложении.
CVE-2019-11495В Couchbase Server 5.1.1 cookie, используемый для связи между узлами, был создан небезопасно. Couchbase Server использует erlang:now() для посева PRNG, что приводит к небольшому пространству поиска потенциальных случайных начальных чисел, которые затем можно использовать для грубой силы cookie и выполнения кода против удаленной системы. Это было исправлено в версии 6.0.0.
CVE-2019-10908В Airsonic 10.2.1 RecoverController.java генерирует пароли через org.apache.commons.lang.RandomStringUtils, который использует java.util.Random внутри. Этот PRNG имеет 48-битный seed, который легко можно взломать, что приводит к тривиальным атакам с повышением привилегий.
CVE-2017-11519passwd_recovery.lua на TP-Link Archer C9(UN)_V2_160517 позволяет злоумышленнику сбросить пароль администратора, используя предсказуемый seed генератора случайных чисел. Это исправлено в C9(UN)_V2_170511.
CVE-2012-1577lib/libc/stdlib/random.c в OpenBSD возвращает 0 при посеве с 0.
CVE-2021-41117keypair - это генератор ключей RSA PEM, написанный на javascript. keypair реализует множество криптографических примитивов самостоятельно или заимствуя из других библиотек, где это возможно, включая node-forge. Была обнаружена проблема, когда эта библиотека генерировала идентичные ключи RSA, используемые в SSH. Это означало бы, что библиотека генерирует идентичные значения P, Q (и, следовательно, N), что, в практическом смысле, невозможно с ключами RSA-2048. Генерация идентичных значений, неоднократно, обычно указывает на проблему с плохой генерацией случайных чисел или плохой обработкой вывода CSPRNG. Проблема 1: Плохая генерация случайных чисел (`GHSL-2021-1012`). Библиотека не полагается полностью на предоставленный платформой CSPRNG, скорее, она использует свой собственный подход CMAC на основе счетчика. Где все идет не так, так это при заполнении реализации CMAC "истинными" случайными данными в функции `defaultSeedFile`. Чтобы заполнить генератор AES-CMAC, библиотека будет использовать два разных подхода в зависимости от среды выполнения JavaScript. В браузере библиотека будет использовать [`window.crypto.getRandomValues()`](https://github.com/juliangruber/keypair/blob/87c62f255baa12c1ec4f98a91600f82af80be6db/index.js#L971). Однако в среде выполнения nodeJS объект `window` не определен, поэтому он переходит к гораздо менее безопасному решению, которое также имеет ошибку. Похоже, что библиотека пытается использовать CSPRNG node, когда это возможно, к сожалению, похоже, что объект `crypto` равен null, потому что переменная была объявлена с тем же именем и установлена в `null`. Таким образом, путь CSPRNG node никогда не используется. Однако, когда `window.crypto.getRandomValues()` недоступен, для заполнения счетчика CMAC используется генератор случайных чисел Lehmer LCG, а LCG заполняется `Math.random`. Хотя это плохо и, вероятно, квалифицируется как ошибка безопасности сама по себе, это не объясняет чрезвычайную частоту возникновения дубликатов ключей. Основной недостаток: Вывод из Lehmer LCG закодирован неправильно. Конкретная [строка][https://github.com/juliangruber/keypair/blob/87c62f255baa12c1ec4f98a91600f82af80be6db/index.js#L1008] с недостатком: `b.putByte(String.fromCharCode(next & 0xFF))` [Определение](https://github.com/juliangruber/keypair/blob/87c62f255baa12c1ec4f98a91600f82af80be6db/index.js#L350-L352) `putByte` - это `util.ByteBuffer.prototype.putByte = function(b) {this.data += String.fromCharCode(b);};`. Упрощенно, это `String.fromCharCode(String.fromCharCode(next & 0xFF))`. Двойной `String.fromCharCode`, почти наверняка, непреднамеренный и является источником слабого заполнения. К сожалению, это не приводит к ошибке. Скорее, это приводит к тому, что большая часть буфера содержит нули. Поскольку мы маскируем с помощью 0xFF, мы можем определить, что 97% выходных данных из LCG преобразуются в нули. Единственные выходные данные, которые приводят к значащим значениям, - это выходные данные от 48 до 57 включительно. Воздействие заключается в том, что каждый байт в начальном значении RNG имеет 97% вероятность быть 0 из-за неправильного преобразования. Когда это не так, байты имеют значения от 0 до 9. В итоге, есть три непосредственных опасения: 1. Библиотека имеет небезопасный путь отката случайного числа. В идеале библиотека требовала бы сильный CSPRNG вместо попыток использовать LCG и `Math.random`. 2. Библиотека неправильно использует сильный генератор случайных чисел при запуске в NodeJS, даже если доступен сильный CSPRNG. 3. Путь отката имеет проблему в реализации, когда большая часть данных начального значения будет фактически нулевой. Из-за плохой генерации случайных чисел keypair генерирует ключи RSA, которые относительно легко угадать. Это может позволить злоумышленнику расшифровать конфиденциальные сообщения или получить авторизованный доступ к учетной записи, принадлежащей жертве.
CVE-2018-1426IBM GSKit (IBM DB2 for Linux, UNIX and Windows 9.7, 10.1, 10.5 и 11.1) дублирует состояние PRNG при системных вызовах fork(), когда загружено несколько экземпляров ICC, что может привести к дублированию идентификаторов сеансов и риску дублирования ключевого материала. IBM X-Force ID: 139071.
CVE-2024-27632Проблема в GNU Savane v.3.12 и более ранних версиях позволяет удаленному злоумышленнику повышать привилегии через form_id в функции form_header().
CVE-2024-1579Некорректное использование начальных значений в генераторе псевдослучайных чисел (PRNG) в Secomea GateManager (веб-серверные модули) допускает перехват сеанса. Эта проблема затрагивает GateManager: до 11.2.624071020.
CVE-2018-12520В ntopng 3.4 до 3.4.180617 обнаружена проблема. PRNG, участвующий в генерации идентификаторов сеансов, не инициализируется при запуске программы. Это приводит к выделению детерминированных идентификаторов сеансов для активных пользовательских сеансов. Злоумышленник, обладающий предварительными знаниями об операционной системе и стандартной библиотеке, используемых хостом, на котором запущена служба, и имени пользователя, сеанс которого они пытаются захватить, может злоупотребить детерминированным генерированием случайных чисел, чтобы захватить сеанс пользователя, тем самым повысив свой доступ.
CVE-2016-3735Piwigo - это программное обеспечение для галереи изображений, написанное на PHP. Если критерий не выполнен на хосте, piwigo по умолчанию использует mt_rand для генерации токенов сброса пароля. Вывод mt_rand можно предсказать после восстановления seed, используемого для его генерации. Это позволяет не аутентифицированному злоумышленнику захватить учетную запись, если он знает адрес электронной почты администратора, чтобы иметь возможность запросить сброс пароля.
CVE-2026-25835Mbed TLS до 3.6.6 и TF-PSA-Crypto до 1.1.0 неправильно использовать семена в Pseudo-Random Number Generator (PRNG).
CVE-2026-41564Версии CryptX до 0.088 для Perl не пересматривают Crypt::PK PRNG state после развивки.
The Crypt::PK::RSA, Скрик::PK:DSA, Скрика::PK:DH, Скрика::PK:PK:PK:CK:CK, Crypt::PK:PK:D25519 и склеп, склеп и склеп::КК:КБ:КБ:КБ:КБ:КВ. A Crypt::PK::* объект, созданный до `fork()` общего байт-идентичное состояние PRNG с каждым детским процессом, и любая рандомизированная операция, которая они выполняют, может производить одинаковый выход, включая генерацию ключа. Двух подписей ECDSA или DSA из разных процессов достаточно, чтобы восстановить подписание закрытого ключа за счет восстановления ключей без повторного использования.
Это влияет на предварительный сбор сервисов, таких как веб-сервер Starman, где объект Crypt:::*, загруженный при запуске, наследуется каждым рабочим процессом.
CVE-2025-27580NIH BRICS (Biomedical Research Informatics Computing System) версии до 14.0.0-67 генерирует предсказуемые токены (зависящие от имени пользователя, времени и фиксированной строки 7Dl9#dj-), что позволяет неаутентифицированным пользователям с Common Access Card (CAC) повысить привилегии и скомпрометировать любой аккаунт, включая администраторов [1].
Источники:
- [1] https://github.com/brics-dev/brics