Skip to main content

Diem CMS CVE-2026-112041

| EUVDEUVD-2026-104044 LOW
Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG) (CWE-338)
2026-10-19 VulDB GHSA-4wx9-wcq2-pggj
2.9
CVSS 4.0 · Vendor: VulDB
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Collect multiple dmString::random outputs
  2. Exploit
    Infer weak PRNG internal state
  3. Execution
    Predict future random values
  4. Impact
    Compromise guessable tokens/identifiers

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Cryptographic PRNG selection
Exploitation Conditions

Exploitation requires that dmString::random output be used in a security-sensitive context (e.g., session tokens, password-reset tokens, CSRF nonces, or unique identifiers) AND that the attacker can observe enough generated values to infer the PRNG state. Limiting factors: the CVSS AC:H rating and the vendor's statement that exploitability is 'difficult' indicate significant practical hurdles; impact is confined to low confidentiality (predictable values) with no integrity or availability effect. Because Diem uses a rolling release, no fixed version exists to validate against, and there is no evidence the weak randomness is used in a high-value flow by default.

Impact

This is a low-priority issue despite being remotely reachable. The CVSS 4.0 vector (AV:N/AC:H/AT:N/PR:N/UI:N) scores only 2.9, driven by high attack complexity (AC:H) and a single low-confidentiality impact (VC:L) with no integrity or availability effect. The CWE-338 weakness means dmString::random relies on a cryptographically weak PRNG, so the realistic payoff is predicting or recovering 'random' values (e.g., tokens, identifiers) rather than direct code execution or data compromise. Signals are consistent and modest: publicly available exploit code exists (CVLDB-referenced GitHub issue), but there is no CISA KEV listing and no EPSS score was provided, so there is no evidence of active or widespread exploitation - the E:P (Proof-of-Concept) threat metric in the input aligns with 'POC exists, not weaponized.' The vendor's own framing ('exploitability is difficult,' 'high complexity') matches the AC:H rating. Net assessment: a genuine but minor cryptographic weakness in an obscure product; not an urgent patch priority. Note: no EPSS value was supplied in the input, so probabilistic exploitation likelihood could not be cross-checked.

Exploit ScenarioDerived

A remote attacker who can observe multiple values produced by dmString::random (such as session identifiers, reset tokens, or nonces) collects samples and uses the known weak PRNG algorithm to reconstruct its internal state and predict future outputs. A proof-of-concept is publicly available via the project's GitHub issue tracker, but the attack is rated high-complexity and requires favorable conditions to be practical.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
No patch listed yet 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 19, 2026

Cryptographically weak pseudo-random number generation in the PHP CMS Diem's dmString::random() helper can produce predictable values that may undermine tokens or identifiers derived from it. All rolling-release versions through commit 116974edfb9a5b8bd69cb13586dc62bcdbb485ad are affected; the flaw is remotely reachable by unauthenticated attackers but rated high complexity (CVSS 2.9), with impact limited to low confidentiality. Publicly available exploit code exists, and the vendor has not responded or released a fixed version.

RemediationAI

No vendor-released patch identified at time of analysis; the maintainers were notified via issue 458 but have not responded. Because the affected helper is in core code, the most direct mitigation is to replace dmString::random() with a CSPRNG (random_bytes()/random_int()) in a local patch or fork, but this carries a maintenance burden and may conflict with future rolling-release updates. Auditing the codebase for uses of dmString::random() in session tokens, password-reset tokens, CSRF nonces, and unique identifiers and replacing those call sites first reduces exposure with minimal side effects. If a local patch is not feasible, avoid deploying features that expose generated values to untrusted users and treat any token produced by this helper as non-security-sensitive. Monitor https://github.com/diem-project/diem/issues/458 and https://vuldb.com/vuln/421689 for an upstream fix; there is no configuration toggle to switch the PRNG.

Affected VersionsENISA

diem 116974edfb9a5b8bd69cb13586dc62bcdbb485ad

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The root cause class is CWE-338, Use of Cryptographically Weak Pseudo-Random Number Generator. Diem's dmString::random() function in dmCorePlugin/lib/basic/dmString.php is reported to generate values with insufficient entropy; in PHP this commonly stems from use of rand()/mt_rand() or a homegrown generator rather than a CSPRNG such as random_bytes() or random_int(). Output from non-cryptographic PRNGs can become predictable once enough values are observed, so session tokens, password-reset tokens, CSRF nonces, or unique identifiers built from this helper could be guessable. Diem is a Symfony-based PHP content management framework distributed via a rolling release; CPE cpe:2.3:a:diem-project:diem:*:*:*:*:*:*:*:* marks all versions as potentially affected, and no fixed commit has been published. Exploitation requires that the generated value be used in a security-sensitive context and be observable by the attacker, which is why the assessed vector is AC:H with only low confidentiality impact and no integrity or availability effect.

Know when Diem gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulDB) PRIMARY 2.9 MEDIUM
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P
vuln.today AI 3.7 LOW

Weak PRNG is remotely reachable without auth (AV:N/PR:N) but needs multiple-sample state inference (AC:H); only predictability of 'random' values leaks, so C:L and I/A:N.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (VulDB).

CVSS VectorVendor: VulDB

Attack Vector
Network
Attack Complexity
High
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

3
Severity Changed
Oct 19, 2026 - 02:23 NVD
MEDIUM LOW
CVSS changed
Oct 19, 2026 - 02:23 NVD
6.3 (MEDIUM) 2.9 (LOW)
CVE Published
Oct 19, 2026 - 02:00 cve.org
LOW 2.9

DescriptionCVE.org

A vulnerability was identified in diem-project diem up to 116974edfb9a5b8bd69cb13586dc62bcdbb485ad. This vulnerability affects the function dmString::random of the file dmCorePlugin/lib/basic/dmString.php. Such manipulation leads to cryptographically weak prng. The attack may be performed from remote. A high complexity level is associated with this attack. It is stated that the exploitability is difficult. The exploit is publicly available and might be used. This product utilizes a rolling release system for continuous delivery, and as such, version information for affected or updated releases is not disclosed. The project was informed of the problem early through an issue report but has not responded yet.

Threat Intelligence Overview

EPSS Score
0.3%
Top 78% exploitable
Prevalence
Rare
obscure open-source PHP CMS, negligible enterprise footprint
Exploit
POC
Public exploit code exists
Social Media
2
Sightings
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment CIRCL GitHub VulDB

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity LOW
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available No
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

34
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +14
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy