CVE-2026-13577
Dancer2 versions before 2.2.0 for Perl generate insecure session ids when required CSPRNG modules are unavailable
Dancer2 versions before 2.2.0 for Perl generate insecure session ids when required CSPRNG modules are unavailable.
Dancer2::Core::Role::SessionFactory::generate_id silently falls back to a built-in rand-derived session id unless both Math::Random::ISAAC::XS and Crypt::URandom are available.
The fallback session id is generated from a SHA-1 hash of a call to the built-in rand function, the absolute path of the Dancer2::Core::Role::SessionFactory module, an internal counter, the process id, the module instance memory address, and a shuffled string of characters (using the List::Util::shuffle function, which also uses the built-in rand function).
These are all low-entropy and easily guessed sources.
The built-in rand() function is seeded with 32-bits and considered unsuitable for security applications.
Predictable session ids could allow an attacker to gain access to systems.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- Low
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
8.2
Dancer2 versions before 2.2.0 for Perl generate insecure session ids when required CSPRNG modules are unavailable
Dancer2 versions before 2.2.0 for Perl generate insecure session ids when required CSPRNG modules are unavailable.
Dancer2::Core::Role::SessionFactory::generate_id silently falls back to a built-in rand-derived session id unless both Math::Random::ISAAC::XS and Crypt::URandom are available.
The fallback session id is generated from a SHA-1 hash of a call to the built-in rand function, the absolute path of the Dancer2::Core::Role::SessionFactory module, an internal counter, the process id, the module instance memory address, and a shuffled string of characters (using the List::Util::shuffle function, which also uses the built-in rand function).
These are all low-entropy and easily guessed sources.
The built-in rand() function is seeded with 32-bits and considered unsuitable for security applications.
Predictable session ids could allow an attacker to gain access to systems.
- Record
CVE-2026-13577- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H - Weakness
- CWE-340, CWE-338
- Updated
- 2026-11-02
EUVDEUVD-2026-45896
8.2
Dancer2 versions before 2.2.0 for Perl generate insecure session ids when required CSPRNG modules are unavailable.
Dancer2::Core::Role::SessionFactory::generate_id silently falls back to a built-in rand-derived session id unless both Math::Random::ISAAC::XS and Crypt::URandom are available.
The fallback session id is generated from a SHA-1 hash of a call to the built-in rand function, the absolute path of the Dancer2::Core::Role::SessionFactory module, an internal counter, the process id, the module instance memory address, and a shuffled string of characters (using the List::Util::shuffle function, which also uses the built-in rand function).
These are all low-entropy and easily guessed sources.
The built-in rand() function is seeded with 32-bits and considered unsuitable for security applications.
Predictable session ids could allow an attacker to gain access to systems.
- Record
EUVD-2026-45896- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-ccc2-34g9-j7rg
8.2
Dancer2 versions through 2.1.0 for Perl generate insecure session ids when CSPRNG modules are...
Dancer2 versions through 2.1.0 for Perl generate insecure session ids when CSPRNG modules are unavailable.
Dancer2::Core::Role::SessionFactory::generate_id silently falls back to a built-in rand-derived session id when both Math::Random::ISAAC::XS and Crypt::URandom are unavailable.
The fallback session id is generated from a SHA-1 hash of a call to the built-in rand function, the absolute path of the Dancer2::Core::Role::SessionFactory module, an internal counter, the process id, the module instance memory address, and a shuffled string of characters (using the List::Util::shuffle function, which also uses the built-in rand function).
These are all low-entropy and easily guessed sources.
The built-in rand() function is seeded with 32-bits and considered unsuitable for security applications.
Predictable session ids could allow an attacker to gain access to systems.
- Record
GHSA-ccc2-34g9-j7rg- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H - Weakness
- CWE-338
- Updated
- 2026-11-02
NVD
8.2
Dancer2 versions before 2.2.0 for Perl generate insecure session ids when required CSPRNG modules are unavailable.
Dancer2::Core::Role::SessionFactory::generate_id silently falls back to a built-in rand-derived session id unless both Math::Random::ISAAC::XS and Crypt::URandom are available.
The fallback session id is generated from a SHA-1 hash of a call to the built-in rand function, the absolute path of the Dancer2::Core::Role::SessionFactory module, an internal counter, the process id, the module instance memory address, and a shuffled string of characters (using the List::Util::shuffle function, which also uses the built-in rand function).
These are all low-entropy and easily guessed sources.
The built-in rand() function is seeded with 32-bits and considered unsuitable for security applications.
Predictable session ids could allow an attacker to gain access to systems.
- Record
CVE-2026-13577- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H - Weakness
- CWE-338, CWE-340
- Updated
- 2026-11-02
OSV
8.2
Dancer2 versions before 2.2.0 for Perl generate insecure session ids when required CSPRNG modules are unavailable
Dancer2 versions before 2.2.0 for Perl generate insecure session ids when required CSPRNG modules are unavailable.
Dancer2::Core::Role::SessionFactory::generate_id silently falls back to a built-in rand-derived session id unless both Math::Random::ISAAC::XS and Crypt::URandom are available.
The fallback session id is generated from a SHA-1 hash of a call to the built-in rand function, the absolute path of the Dancer2::Core::Role::SessionFactory module, an internal counter, the process id, the module instance memory address, and a shuffled string of characters (using the List::Util::shuffle function, which also uses the built-in rand function).
These are all low-entropy and easily guessed sources.
The built-in rand() function is seeded with 32-bits and considered unsuitable for security applications.
Predictable session ids could allow an attacker to gain access to systems.
- Record
CVE-2026-13577- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H - Weakness
- CWE-338, CWE-340
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-13577
8.2
Dancer2 versions before 2.2.0 for Perl generate insecure session ids when required CSPRNG modules are unavailable. Dancer2::Core::Role::SessionFactory::generate_id silently falls back to a built-in rand-derived session id unless both Math::Random::ISAAC::XS and Crypt::URandom are available. The fallback session id is generated from a SHA-1 hash of a call to the built-in rand function, the absolute path of the Dancer2::Core::Role::SessionFactory module, an internal counter, the process id, the module instance memory address, and a shuffled string of characters (using the List::Util::shuffle function, which also uses the built-in rand function). These are all low-entropy and easily guessed sources. The built-in rand() function is seeded with 32-bits and considered unsuitable for security applications. Predictable session ids could allow an attacker to gain access to systems.
- Record
DEBIAN-CVE-2026-13577- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-13577
8.2
Dancer2 versions before 2.2.0 for Perl generate insecure session ids when required CSPRNG modules are unavailable. Dancer2::Core::Role::SessionFactory::generate_id silently falls back to a built-in rand-derived session id unless both Math::Random::ISAAC::XS and Crypt::URandom are available. The fallback session id is generated from a SHA-1 hash of a call to the built-in rand function, the absolute path of the Dancer2::Core::Role::SessionFactory module, an internal counter, the process id, the module instance memory address, and a shuffled string of characters (using the List::Util::shuffle function, which also uses the built-in rand function). These are all low-entropy and easily guessed sources. The built-in rand() function is seeded with 32-bits and considered unsuitable for security applications. Predictable session ids could allow an attacker to gain access to systems.
- Record
UBUNTU-CVE-2026-13577- CVSS 3.1
- 8.2 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H - Updated
- 2026-11-02
OSVMGASA-2026-0437 No score
Updated perl-Dancer2 packages fix a security vulnerability
Dancer2 versions through 2.1.0 for Perl generate insecure session ids when required CSPRNG modules are unavailable. (CVE-2026-13577)
- Record
MGASA-2026-0437- Updated
- 2026-11-02
Affected packages
| Package | Affected | Fixed |
|---|---|---|
libdancer2-perlDebian:12 |
All versions, plus listed versions 0.400001+dfsg-11.0.0+dfsg-11.1.0+dfsg-11.1.1+dfsg-11.1.2+dfsg-12.0.1-12.1.0-12.2.2-1 |
None known |
libdancer2-perlDebian:13 |
All versions, plus listed versions 1.1.2+dfsg-12.0.1-12.1.0-12.2.2-1 |
None known |
libdancer2-perlDebian:14 |
before 2.2.2-1, plus listed versions 1.1.2+dfsg-12.0.1-12.1.0-1 |
2.2.2-1 |
perl-Dancer2Mageia:10 |
before 2.0.1-1.2.mga10 | 2.0.1-1.2.mga10 |
perl-Dancer2Mageia:9 |
before 0.400.1-1.2.mga9 | 0.400.1-1.2.mga9 |
libdancer2-perlUbuntu:16.04:LTS |
All versions, plus listed versions 0.160003+dfsg-10.163000+dfsg-10.166001+dfsg-1 |
None known |
libdancer2-perlUbuntu:18.04:LTS |
All versions, plus listed versions 0.205000+dfsg-10.205002+dfsg-10.205002+dfsg-2 |
None known |
libdancer2-perlUbuntu:20.04:LTS |
All versions, plus listed versions 0.208001+dfsg-10.208002+dfsg-10.300000+dfsg-1 |
None known |
libdancer2-perlUbuntu:22.04:LTS |
All versions, plus listed versions 0.300005+dfsg-10.301004+dfsg-1 |
None known |
libdancer2-perlUbuntu:24.04:LTS |
All versions, plus listed versions 0.400001+dfsg-11.0.0+dfsg-11.1.0+dfsg-1 |
None known |
libdancer2-perlUbuntu:26.10 |
All versions, plus listed versions 1.1.2+dfsg-12.1.0-1 |
None known |
libdancer2-perlUbuntu:26.04:LTS |
All versions, plus listed versions 1.1.2+dfsg-1 |
None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-13577 is a high vulnerability (CVSS 8.2) in libdancer2-perl, published July 20, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.57%, the 47th percentile. Fixed in libdancer2-perl 2.2.2-1.
References
metacpan.org/release/CROMEDOME/Dancer2-2.2.0/changes
github.com/PerlDancer/Dancer2/issues/1807
github.com/PerlDancer/Dancer2/pull/1804
github.com/PerlDancer/Dancer2/blob/v2.1.0/lib/Dancer2/Core/Role/SessionFactory.pm
cve.org/CVERecord?id=CVE-2026-5080
nvd.nist.gov/vuln/detail/CVE-2026-13577
Show 12 moreShow less
github.com/advisories/GHSA-ccc2-34g9-j7rg
cpan.org/modules
github.com/CVEProject/cvelistV5/tree/main/cves/2026/13xxx/CVE-2026-13577.json
github.com/PerlDancer/Dancer2
security-tracker.debian.org/tracker/CVE-2026-13577
advisories.mageia.org/MGASA-2026-0437.html
bugs.mageia.org/show_bug.cgi?id=35967
openwall.com/lists/oss-security/2026/07/20/5
lists.fedoraproject.org/archives/list/[email protected]/message/PXWK3ODXBSRKU5P4JUADGHFPAH5I42DO
ubuntu.com/security/CVE-2026-13577
cve.org/CVERecord?id=CVE-2026-13577
lists.security.metacpan.org/cve-announce/msg/41975698