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.

Changes for version 0.713

  • BUG FIXES
    • Fix the ability to generate links in emails that have dynamic hosts. The security fix in the previous release cached the first base URI, which meant that if an application intentionally supports different hosts for its generated emails (based on the reqest host) then these were always fixed at the first request.

Modules

extensible authentication framework for Dancer2 apps
example auth provider using app config
authenticate *nix system accounts
base role for authentication providers
test suite for Auth::Extensible plugin
Dancer2 app for testing providers