Skip to main content

Apache::API::Password CVE-2026-5088

| EUVDEUVD-2026-22840 HIGH
Use of Cryptographically Weak Pseudo-Random Number Generator (PRNG) (CWE-338)
2026-04-15 CPANSec
7.5
CVSS 3.1 · NVD
Share

Severity by source

NVD PRIMARY
7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
vuln.today AI
5.9 MEDIUM

AC:H because both Crypt::URandom and Bytes::Random::Secure must be absent; hash acquisition is also a prerequisite before offline cracking yields C:H.

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

Primary rating from NVD.

CVSS VectorNVD

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

Lifecycle Timeline

5
Metadata Corrected
Sep 16, 2026 - 07:40 vuln.today
tag: Perl added
Analysis Generated
Jul 26, 2026 - 15:39 vuln.today
CVSS changed
Apr 16, 2026 - 13:22 NVD
7.5 (HIGH)
EUVD ID Assigned
Apr 15, 2026 - 07:45 euvd
EUVD-2026-22840
CVE Published
Apr 15, 2026 - 07:03 nvd
HIGH 7.5

DescriptionCVE.org

Apache::API::Password versions through v0.5.2 for Perl can generate insecure random values for salts.

The _make_salt and _make_salt_bcrypt methods will attept to load Crypt::URandom and then Bytes::Random::Secure to generate random bytes for the salt. If those modules are unavailable, it will simply return 16 bytes generated with Perl's built-in rand function.

The rand function is unsuitable for cryptographic use.

These salts are used for password hashing.

AnalysisAI

Cryptographically weak password salts in Apache::API::Password (Perl, CPAN) through v0.5.2 allow offline dictionary attacks against hashed credentials when optional secure-random modules are absent. The library's _make_salt and _make_salt_bcrypt methods silently fall back to Perl's built-in rand() - a non-cryptographic PRNG - if both Crypt::URandom and Bytes::Random::Secure are unavailable at runtime, producing predictable salt values that dramatically reduce the search space for password cracking. No public exploit code and no confirmed active exploitation are recorded; EPSS is 0.02% (4th percentile), consistent with a configuration-dependent cryptographic weakness rather than a directly triggerable remote flaw.

Technical ContextAI

Apache::API::Password (CPE: cpe:2.3:a:jdeguest:apache::api::password:*:*:*:*:*:*:*:*) is a Perl CPAN module (vendor: JDEGUEST) that provides password hashing services - including bcrypt - for applications built on the Apache2::API framework. The root cause is CWE-338 (Use of Cryptographically Weak Pseudo-Random Number Generator). The library implements a module-preference chain for randomness: it first attempts to load Crypt::URandom (OS-entropy wrapper) and then Bytes::Random::Secure (CSPRNG). Only if both are absent does it fall back to rand(), which in Perl is a linear congruential generator seeded from a low-entropy source and is explicitly documented as unsuitable for security purposes. Because salts are intended to prevent rainbow-table and precomputed attacks, a predictable salt space collapses the security guarantee of even a strong hash algorithm like bcrypt. The referenced CPANSec guidance at security.metacpan.org and the Crypt::URandom documentation confirm the recommended practice that the library fails to enforce.

RemediationAI

Upgrade to Apache2-API v0.5.3 or later via CPAN (cpan Apache2::API or cpanm Apache2::API), which resolves the insecure fallback. The vendor changelog at https://metacpan.org/release/JDEGUEST/Apache2-API-v0.5.3/changes documents the fix. As a workaround prior to patching, install Crypt::URandom (cpanm Crypt::URandom) - it is a minimal pure-Perl module with no compiled dependencies that provides OS-level entropy on Linux, macOS, and Windows - which will satisfy the library's first preference and prevent the insecure rand() fallback from ever firing. Installing Bytes::Random::Secure is an equally valid workaround. Operators should also audit whether any salts generated by the vulnerable code path are already in use: if so, forcing a password-reset cycle for affected users is advisable, since previously stored hashes may have been generated with weak salts. No side effects from the upgrade are anticipated for correctly configured deployments.

More in Perl

View all
CVE-2012-6329 HIGH POC
7.5 Jan 04

The _compile function in Maketext.pm in the Locale::Maketext implementation in Perl before 5.17.7 does not properly hand

CVE-2017-12814 CRITICAL POC
9.8 Sep 28

Stack-based buffer overflow in the CPerlHost::Add method in win32/perlhost.h in Perl before 5.24.3-RC1 and 5.26.x before

CVE-2015-8608 CRITICAL POC
9.8 Feb 07

The VDir::MapPathA and VDir::MapPathW functions in Perl 5.22 allow remote attackers to cause a denial of service (out-of

CVE-2018-18314 CRITICAL POC
9.8 Dec 07

Perl before 5.26.3 has a buffer overflow via a crafted regular expression that triggers invalid write operations. Rated

CVE-2018-18312 CRITICAL POC
9.8 Dec 05

Perl before 5.26.3 and 5.28.0 before 5.28.1 has a buffer overflow via a crafted regular expression that triggers invalid

CVE-2018-18313 CRITICAL POC
9.1 Dec 07

Perl before 5.26.3 has a buffer over-read via a crafted regular expression that triggers disclosure of sensitive informa

CVE-2016-2381 HIGH
7.5 Apr 08

Perl might allow context-dependent attackers to bypass the taint protection mechanism in a child process via duplicate e

CVE-2023-31484 HIGH POC
8.1 Apr 29

CPAN.pm before 2.35 does not verify TLS certificates when downloading distributions over HTTPS. Rated high severity (CVS

CVE-2016-6185 HIGH POC
7.8 Aug 02

The XSLoader::load method in XSLoader in Perl does not properly locate .so files when called in a string eval, which mig

CVE-2018-12015 HIGH POC
7.5 Jun 07

In Perl through 5.26.2, the Archive::Tar module allows remote attackers to bypass a directory-traversal protection mecha

CVE-2015-8853 HIGH
7.5 May 25

The (1) S_reghop3, (2) S_reghop4, and (3) S_reghopmaybe3 functions in regexec.c in Perl before 5.24.0 allow context-depe

CVE-2017-12883 CRITICAL
9.1 Sep 19

Buffer overflow in the S_grok_bslash_N function in regcomp.c in Perl 5 before 5.24.3-RC1 and 5.26.x before 5.26.1-RC1 al

Share

CVE-2026-5088 vulnerability details – vuln.today

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