CVE-2026-11702: Bytes::Random::Secure::Tiny PRNG State Sharing in Forked Processes
Perl's Bytes::Random::Secure::Tiny library has a flaw where random number generation fails to properly reset when code is forked into multiple processes. If an application initializes the random number generator before spawning child processes, all of those processes will generate identical sequences of random numbers. This means any cryptographic secrets or tokens created across multiple processes become predictable, defeating the security purpose of randomization. The vulnerability affects versions 1.011 and earlier.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 7.5 HIGH · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
- Weaknesses (CWE)
- CWE-335
- Affected products
- 0 configuration(s)
- Published / Modified
- 2026-06-26 / 2026-07-01
NVD description (verbatim)
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.
5 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
CVE-2026-11702 is a cryptographic weakness in Bytes::Random::Secure::Tiny (Perl) caused by shared PRNG state across forked processes. When an object is instantiated before a fork() call, the internal state of the pseudo-random number generator is inherited unchanged by child processes. Without re-seeding, each process produces identical random streams deterministically. This violates the core assumption of secure random generation: that secrets generated in different execution contexts are independent. The vulnerability is classified under CWE-335 (Incorrect Restriction of Rendered UI Layers or Frames), though it more directly reflects insufficient state isolation in cryptographic operations.
Business impact
For organizations deploying multi-process Perl applications that rely on Bytes::Random::Secure::Tiny for secrets—session tokens, API keys, nonces, or encryption material—this vulnerability allows attackers to predict generated values with high confidence. In web applications using preforked servers or worker pools, an attacker observing one process's output can derive secrets from all sibling processes. This undermines authentication, breaks session isolation, and may expose encryption keys. The impact extends to any application where secret predictability directly compromises confidentiality or integrity.
Affected systems
Perl applications using Bytes::Random::Secure::Tiny library through version 1.011 are affected when deployed in multi-process architectures. Common scenarios include preforked web servers (e.g., Catalyst, Dancer, or raw fork-based workers), parallel batch processors, and microservice containers that fork for concurrency. Single-process applications and those that initialize the PRNG after forking are not vulnerable.
Exploitability
Exploitability is practical if an attacker can observe random output from one process and predict output from others—plausible in scenarios where secrets are exposed via timing channels, side channels, or direct observation of session tokens. No code injection or authentication bypass is required; exploitation relies on the mathematical property that identical PRNG state produces identical output. The CVSS score of 7.5 (HIGH) reflects high confidentiality impact with network-accessible attack vector and no privilege requirements, though actual risk depends on how secrets are exposed and whether they are reused across processes.
Remediation
Upgrade Bytes::Random::Secure::Tiny to a patched version that re-seeds the PRNG after process fork, ensuring each child inherits a unique state. Verify the fixed version against the vendor's advisory. As a temporary mitigation, initialize a new Bytes::Random::Secure::Tiny object in each child process after fork() rather than inheriting a pre-fork object. For applications unable to patch immediately, consider using OS-level randomness sources (e.g., /dev/urandom) via alternative Perl modules that guarantee per-process independence.
Patch guidance
Check the Bytes::Random::Secure::Tiny distribution on CPAN for versions released after June 2026. Patched versions will include logic to detect fork events (via $$ PID tracking or POSIX::_exit hooks) and re-seed automatically. Installations should verify against the module's official advisory before deploying. Test multi-process deployments after patching to confirm randomness independence across processes.
Detection guidance
Audit Perl dependency manifests and installed module versions to identify Bytes::Random::Secure::Tiny ≤1.011 in production. Review code for patterns where a Bytes::Random::Secure::Tiny object is created before fork() calls; flag these as high priority. Monitor runtime for fork() calls in applications that generate secrets, and correlate process creation timestamps with secret generation logs to detect potential patterns. No network-visible signature exists; detection requires code review and inventory management.
Why prioritize this
This is a HIGH-severity cryptographic weakness affecting core security operations in multi-process Perl applications. While not yet in CISA's Known Exploited Vulnerabilities catalog, the vulnerability requires only a code update and poses direct confidentiality risk to applications handling authentication tokens, session IDs, or encryption keys. Organizations should prioritize patching for any Perl applications that fork and generate secrets, particularly those exposed to untrusted networks.
Risk score, explained
CVSS 7.5 reflects a network-accessible vulnerability with high confidentiality impact (complete disclosure of secrets), no authentication required, and no user interaction. The score assumes secrets are either exposed to attackers or can be validated through timing or cryptographic attacks. Actual organizational risk depends on whether Perl applications are internet-facing, whether secrets are reused across processes, and whether alternative defenses (e.g., HSM-based key generation) are in place.
Frequently asked questions
Does this vulnerability affect single-threaded Perl applications?
No. Single-process applications or those that never call fork() are not vulnerable. The flaw specifically manifests when an object is initialized before process forking. Applications that create a new Bytes::Random::Secure::Tiny object in each child process after fork() are also safe.
Can I work around this without upgrading immediately?
Yes, as a temporary measure: instantiate Bytes::Random::Secure::Tiny in each child process after fork(), rather than inheriting a pre-fork object. Alternatively, use a different Perl random source (e.g., Math::Random::Secure or OS-level sources like /dev/urandom) that guarantees per-process independence until a patch is available.
Will this affect my non-Perl applications?
No. This vulnerability is specific to the Bytes::Random::Secure::Tiny Perl module. Other languages and libraries with proper PRNG re-seeding after fork are not affected.
Is there a public exploit for this vulnerability?
As of the vulnerability's publication, there is no known public exploit code. However, the flaw is deterministic and trivial to exploit in practice: any attacker observing output from one process can predict output from all siblings. No code execution or special tools are required.
This analysis is provided for informational purposes and reflects publicly available information as of the vulnerability's publication date. Readers should verify all patched version numbers, upgrade procedures, and mitigation effectiveness against the vendor's official advisory before deployment. SEC.co does not warrant the accuracy of third-party vulnerability databases or vendor statements. Organizations should conduct independent risk assessments based on their specific use of affected software and threat model. Source: NVD (public-domain), retrieved 2026-08-04. Analysis generated by SEC.co (claude-haiku-4-5).
Weaknesses (CWE)
Related vulnerabilities
- CVE-2026-11625HIGHBytes::Random::Secure Perl PRNG State Sharing Across Forked Processes
- CVE-2016-20062HIGHSQL Injection in Simply Poll 1.4.1 WordPress Plugin - Unauthenticated Data Theft
- CVE-2016-20063HIGHSQL Injection in Single Personal Message 1.0.3 – Credential & Data Theft Risk
- CVE-2016-20065HIGHUnauthenticated SQL Injection in Product Catalog 8 WordPress Plugin
- CVE-2016-20066HIGHWordPress CP Polls 1.0.8 Persistent XSS Vulnerability
- CVE-2016-20068HIGHUnauthenticated SQL Injection in WordPress Booking Calendar Contact Form 1.0.23
- CVE-2016-20069HIGHUnauthenticated SQL Injection in WordPress Booking Calendar Contact Form 1.0.23
- CVE-2016-20071HIGHCritical SQL Injection in WordPress 404 Redirection Manager Plugin v1.0