Security Advisories (1)
CVE-2026-13577 (2026-07-20)

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.

NAME

Dancer2::Logger::Capture::Trap - a place to store captured Dancer2 logs

VERSION

version 2.1.0

SYNOPSIS

my $trap = Dancer2::Logger::Capture::Trap->new;
$trap->store( $level, $message );
my $logs = $trap->read;

DESCRIPTION

This is a place to store and retrieve capture Dancer2 logs used by Dancer2::Logger::Capture.

Methods

new

store

$trap->store($level, $message);

Stores a log $message and its $level.

read

my $logs = $trap->read;

Returns the logs stored as an array ref and clears the storage.

For example...

[{ level => "warning", message => "Danger! Warning! Dancer2!" },
 { level => "error",   message => "You fail forever" }
];

SEE ALSO

Dancer2::Logger::Capture

AUTHOR

Dancer Core Developers

COPYRIGHT AND LICENSE

This software is copyright (c) 2026 by Alexis Sukrieh.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.