﻿# V5343\. OWASP\. A cryptographically weak random number is used for sensitive data\.

Анализатор обнаружил использование случайных чисел, созданных небезопасным генератором, в контексте потенциально чувствительных данных\. 

Уязвимость такого типа относится к следующим категориям OWASP Top 10:

* [A04:2025 Cryptographic Failures](https://owasp.org/Top10/2025/A04_2025-Cryptographic_Failures/)
* [A02:2021 – Cryptographic Failures](https://owasp.org/Top10/2021/A02_2021-Cryptographic_Failures/)

Рассмотрим пример:

```cpp
Random random = new Random();
long token = random.nextLong() & Long.MAX_VALUE;
HttpCookie cookie = new HttpCookie("token", Long.toString(token)); // <=
```

В примере генерируется токен, который может быть использован для сохранения и восстановления сессии пользователя\. Для его создания используется обычный генератор псевдослучайных чисел, который работает предсказуемым способом\. Если сервер использует токен как ключ доступа к определённому ресурсу или действию, злоумышленник может проанализировать получаемые токены и предопределить следующее значение, тем самым получая доступ к сессии и правам другого пользователя\. 

Потенциальную уязвимость можно исправить, используя криптографически стойкий генератор случайных чисел:

```cpp
SecureRandom secureRandom = new SecureRandom();
long token = secureRandom.nextLong() & Long.MAX_VALUE;
HttpCookie cookie = new HttpCookie("token", Long.toString(token));
```

Также следует применять встроенные механизмы используемых фреймворков, которые исключают необходимость генерировать такие токены вручную\.