Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Network-reachable but realistic nonce prediction needs epoch timing and interaction with a live OAuth flow (AC:H, UI:R); no privileges needed (PR:N); auth integrity/confidentiality impact High, no availability effect.
Primary rating from Vendor (CPANSec).
CVSS VectorVendor: CPANSec
Lifecycle Timeline
4DescriptionCVE.org
Dancer2::Plugin::Auth::OAuth versions before 0.22 for Perl default to a predictable nonce.
The default nonce was generated using an MD5 hash of the epoch time, which is predictable.
AnalysisAI
Predictable nonce generation in the Dancer2::Plugin::Auth::OAuth module for Perl (all versions before 0.22) weakens the OAuth authentication flow because the default nonce is derived from an MD5 hash of the current epoch time, a value an attacker can reconstruct or brute-force. Because the nonce is meant to guarantee request uniqueness and thwart replay/forgery, its predictability can let network attackers anticipate or replay authentication requests, undermining the confidentiality and integrity of the OAuth handshake. There is no public exploit identified at time of analysis and the vulnerability is not in CISA KEV; EPSS is low (0.19%, 9th percentile), but a vendor patch (0.22) is available.
Technical ContextAI
The affected component is a Perl authentication plugin (CPE cpe:2.3:a:biafra:dancer2::plugin::auth::oauth) that adds OAuth-based login to applications built on the Dancer2 web framework. In OAuth (RFC 5849 §3.3 and the secret-entropy guidance in §4.9, both cited in the references), the nonce combines with a timestamp to ensure every signed request is unique and cannot be replayed. The root cause maps to CWE-338 (Use of Cryptographically Weak Pseudo-Random Number Generator): rather than sourcing entropy from a CSPRNG, the plugin built the default nonce as MD5(epoch time). Since epoch seconds are low-entropy and externally observable, and MD5 is a fast, non-secret transform, the resulting nonce is effectively predictable, collapsing the uniqueness/unpredictability guarantee the nonce is supposed to provide.
RemediationAI
Vendor-released patch: upgrade Dancer2::Plugin::Auth::OAuth to version 0.22 or later, which replaces the predictable MD5-of-epoch default nonce with a properly random value; the fix is documented in the release changelog at https://metacpan.org/release/BIAFRA/Dancer2-Plugin-Auth-OAuth-0.22/changes and the advisory at https://seclists.org/oss-sec/2026/q2/938. Because this is a CPAN dependency, update via your Perl toolchain (e.g., cpanm Dancer2::Plugin::Auth::OAuth@0.22) and rebuild/redeploy the application. If you cannot upgrade immediately, the concrete compensating control is to override the plugin's nonce generation to use a cryptographically secure source (for example, supply a nonce derived from Crypt::URandom or /dev/urandom rather than time-based MD5), which removes the predictability but requires code-level customization and testing against your OAuth provider; additionally, enforce short-lived authorization requests and TLS everywhere to reduce the interception/replay window, accepting that these transport controls mitigate but do not eliminate the underlying weak-entropy problem.
Same technique Information Disclosure
View allVendor StatusVendor
SUSE
Severity: CriticalShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-37010
GHSA-h3g4-wmrw-rm63