| Title | diem-project diem 116974edfb9a5b8bd69cb13586dc62bcdbb485ad Cryptographically Weak PRNG |
|---|
| Description | `dmCorePlugin/lib/basic/dmString.php` implements `dmString::random()` by repeatedly calling PHP `rand()`. The password-reset action in `dmCorePlugin/plugins/dmUserPlugin/modules/dmUser/lib/BasedmUserActions.class.php` uses a 12-character value from this function as a bearer `forgot_password_code`, and the persistent-login path in `dmSecurityUser.class.php` derives its remembered-login key from the same output. The reset handler accepts the code to set a new password, while `dmRememberMeFilter` authenticates a request based on a matching key. These account-authentication tokens are generated by a non-cryptographic PRNG rather than a CSPRNG, so deployments where an attacker can predict or recover the PRNG state are exposed to account takeover. |
|---|
| Source | ⚠️ https://github.com/diem-project/diem/issues/458 |
|---|
| User | cnluminous (UID 98136) |
|---|
| Submission | 09/30/2026 18:06 (25 days ago) |
|---|
| Moderation | 10/18/2026 11:52 (18 days later) |
|---|
| Status | Accepted |
|---|
| VulDB entry | 421689 [diem-project diem up to 116974edfb9a5b8bd69cb13586dc62bcdbb485ad dmString.php dmString::random weak prng] |
|---|
| Points | 20 |
|---|