Concierge::Sessions versions from 0.8.1 before 0.8.5 for Perl generate insecure session ids. The generate_session_id function in Concierge::Sessions::Base defaults to using the uuidgen command to generate a UUID, with a fallback to using Perl's built-in rand function. Neither of these methods are secure, and attackers are able to guess session_ids that can grant them access to systems. Specifically, * There is no warning when uuidgen fails. The software can be quietly using the fallback rand() function with no warnings if the command fails for any reason. * The uuidgen command will generate a time-based UUID if the system does not have a high-quality random number source, because the call does not explicitly specify the --random option. Note that the system time is shared in HTTP responses. * UUIDs are identifiers whose mere possession grants access, as per RFC 9562. * The output of the built-in rand() function is predictable and unsuitable for security applications.
The generate_session_id function in the Concierge::Sessions::Base module by default invokes the uuidgen system command to generate a UUID, and in case of its unavailability silently falls back to the built-in Perl rand() function — without any warning. The uuidgen command, if the system does not have a high-quality source of randomness, may generate UUIDs based on system time, which is additionally exposed in HTTP responses, facilitating the attacker's ability to predict the identifier value. The rand() function is completely deterministic and unsuitable for security-related applications, so relying on it for session identifier generation makes them vulnerable to guessing.
An attacker can guess or predict the active session identifier of another user and hijack their session, gaining full unauthorized access to the system with the victim's privileges (violation of confidentiality, integrity, and availability).
The Concierge::Sessions library should be updated to version 0.8.5 or later, which contains improvements to the session identifier generation mechanism. Details of changes are available in the vendor references on MetaCPAN and in the project's GitHub repository.
Concierge::Sessions (Perl module, vendor BVA) in versions 0.8.1 to 0.8.4 inclusive.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HBva Concierge\
APPBva\