Security Advisories (1)
CVE-2026-15689 (2026-08-15)

Dancer2::Plugin::Auth::Extensible versions through 0.713 for Perl allow password reset link poisoning via the request Host header in _default_email_password_reset and _default_welcome_send. Both default emails emit a link of the form `$base/login/$code`, whose authority comes from the request Host header, or from X-Forwarded-Host under behind_proxy (obtained from Dancer2's request->base function). A POST to /login carrying submit_reset and a username needs no authentication: it stores a fresh reset code against that account and mails the account holder a link to a host of the sender's choosing. The welcome mail takes the same path when the application calls create_user with email_welcome set. Through 0.711 the handlers read `request->uri_base` and `request->base` directly; Versions 0.712 and later provide an uri_base configuration key that defaults to the untrusted `request->uri_base` when unset. The default configuration with reset_password_handler enabled and the default message text, a recipient who follows the link hands a working reset code to the sender's host, which is enough to take over the account.

NAME

Dancer2::Plugin::Auth::Extensible::Unix - authenticate *nix system accounts

DESCRIPTION

An authentication provider for Dancer2::Plugin::Auth::Extensible which authenticates Linux/Unix system accounts.

Uses getpwnam and getgrent to read user and group details, and Authen::Simple::PAM to perform authentication via PAM.

Unix group membership is used as a reasonable facsimile for roles - this seems sensible.

WARNING: in order to use PAM authentication on most modern Linux/UNIX systems the application performing authentication must have read access to the /etc/shadow file. This is a security risk since it can lead to accidental disclosure of sensitive data if you have any path traversal vulnerabilities, etc. We strongly recommend AGAINST using this module and provide it purely as an example. Any use of it IS AT YOUR OWN RISK. You have been warned.

METHODS

authenticate_user $username, $password

get_user_details $username

Returns information from the passwd file as a hash reference with the following keys: uid, gid, quota, comment, gecos, dir, shell, expire

get_user_roles $username