Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Confidentiality-only predictable secrets; AC:H because exploitation needs the victim's init-before-fork pattern and the attacker must predict the shared stream; no attacker privileges, so PR:N.
Primary rating from Vendor (CPANSec).
CVSS VectorVendor: CPANSec
Lifecycle Timeline
4DescriptionCVE.org
Bytes::Random::Secure::Tiny versions through 1.011 for Perl share internal state across forked processes.
When an object is initialised before forking, then the internal state for the PRNG is shared across processes and identical random streams will be produced.
Secrets generated in multiprocess applications are predictable across processes.
AnalysisAI
Predictable secret generation in the Perl module Bytes::Random::Secure::Tiny (versions through 1.011) occurs because a PRNG object initialized before a fork() shares its ISAAC engine state across all child processes, causing every child to emit identical 'random' streams. Multiprocess Perl applications (e.g., preforking web servers) that create one generator and reuse it after forking will produce duplicate session tokens, keys, salts, or nonces across workers. Reported by CPANSec with an upstream fix; EPSS is low (0.16%, 5th percentile) and there is no public exploit identified at time of analysis.
Technical ContextAI
The module is a dependency-light reimplementation of Bytes::Random::Secure that wraps Math::Random::ISAAC::Embedded seeded from Crypt::Random::Seed::Embedded. The root cause is CWE-335 (Incorrect Usage of Seeds in a PRNG): when new() seeds the ISAAC engine once and the object is then carried across a fork(), the in-memory PRNG state is copied verbatim into each child, so all children deterministically replay the same sequence from the inherited seed. The upstream PR (#7) fixes this by stamping the seeding PID into the object and re-seeding from fresh entropy inside irand() whenever $$ changes - re-seeding at most once per fork - while explicitly leaving thread isolation as caller responsibility. CPE coverage is cpe:2.3:a:davido:bytes::random::secure::tiny:*, all versions up to and including 1.011.
RemediationAI
Patch available per vendor advisory; an upstream fix exists as PR #7 plus a MetaCPAN security patch (CVE-2026-11702-r1.patch) that adds PID-based fork detection and re-seeds the PRNG when the process forks - apply the patched build once your distribution publishes a fixed release above 1.011 (no fixed version number is independently confirmed in the available data, so verify the release before pinning). As a code-level workaround until you can upgrade, instantiate the Bytes::Random::Secure::Tiny object inside each child process after fork() rather than in the parent, or explicitly create a fresh generator per worker; this guarantees independent entropy at the cost of slightly higher per-worker seeding overhead. Note that re-seeding does not retroactively fix any secrets already generated by the shared state, so rotate any tokens/keys produced by an affected preforking deployment. References: https://github.com/daoswald/Bytes-Random-Secure-Tiny/pull/7 and https://security.metacpan.org/patches/B/Bytes-Random-Secure-Tiny/1.011/CVE-2026-11702-r1.patch.
Integer overflow in the Bytes library versions 1.2.1 through 1.11.0 allows attackers to corrupt the BytesMut capacity va
Predictable secret generation in the Perl module Bytes::Random::Secure (versions through 0.29) occurs because the module
Same technique Information Disclosure
View allVendor StatusVendor
SUSE
Severity: ImportantShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-39641
GHSA-vcwj-3q56-r32w