Description
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.
Affected products
| Vendor | Product | Affected | Fixed |
|---|---|---|---|
| — | Dancer2 | < 2.2.0 | 2.2.0 |
Fixed in Linux distributions
Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.
Debian
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Debian 14 | libdancer2-perl | 2.2.2-1 | — |
| Debian 13 | libdancer2-perl | No fix yet | — |
| Debian 12 | libdancer2-perl | No fix yet | — |
Ubuntu
Security tracker ↗| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 26.10 | libdancer2-perl | No fix yet | — |
| Ubuntu 26.04 LTS | libdancer2-perl | No fix yet | — |
| Ubuntu 24.04 LTS | libdancer2-perl | No fix yet | — |
| Ubuntu 22.04 LTS | libdancer2-perl | No fix yet | — |
| Ubuntu 20.04 LTS | libdancer2-perl | No fix yet | — |
Show 2 more (older releases, extended support, other products)Fewer releases
| Release | Package | Fixed in | Advisory |
|---|---|---|---|
| Ubuntu 18.04 LTS | libdancer2-perl | No fix yet | — |
| Ubuntu 16.04 LTS | libdancer2-perl | No fix yet | — |
References
- https://metacpan.org/release/CROMEDOME/Dancer2-2.2.0/changes release-notes
- https://github.com/PerlDancer/Dancer2/issues/1807 issue-tracking
- https://github.com/PerlDancer/Dancer2/pull/1804 issue-tracking
- https://github.com/PerlDancer/Dancer2/blob/v2.1.0/lib/Dancer2/Core/Role/SessionFactory.pm#L142
- https://www.cve.org/CVERecord?id=CVE-2026-5080 related