CVE-2026-15689
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
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.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
9.8
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
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.
- Record
CVE-2026-15689- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-640
- Updated
- 2026-11-02
EUVDEUVD-2026-59758
9.8
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.
- Record
EUVD-2026-59758- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-gmj3-5xfg-q3qg
9.8
Dancer2::Plugin::Auth::Extensible versions through 0.713 for Perl allow password reset link...
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.
- Record
GHSA-gmj3-5xfg-q3qg- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-640
- Updated
- 2026-11-02
NVD
9.8
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.
- Record
CVE-2026-15689- CVSS 3.1
- 9.8 Critical
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - Weakness
- CWE-640
- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:11564-1 No score
perl-Dancer2-Plugin-Auth-Extensible-0.713.0-1.1 on GA media
These are all security issues fixed in the perl-Dancer2-Plugin-Auth-Extensible-0.713.0-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:11564-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:22190-1 No score
Security update for perl-Dancer2-Plugin-Auth-Extensible
This update for perl-Dancer2-Plugin-Auth-Extensible fixes the following issues:
Changes in perl-Dancer2-Plugin-Auth-Extensible:
-
updated to 0.714.0 (0.714)
- Fix failing tests when sendmail binary not present on system.
-
updated to 0.713.0 (0.713)
- 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.
- Add uri_base parameter (addresses CVE-2026-15689). If this is not set and if the application does not otherwise enforce a particular hostname, then an attacker can generate password reset emails and welcome emails for genuine users that contain links to a malicious host. bsc#1275272
- Record
openSUSE-SU-2026:22190-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
perl-Dancer2-Plugin-Auth-ExtensibleopenSUSE:Tumbleweed |
before 0.713.0-1.1 | 0.713.0-1.1 |
perl-Dancer2-Plugin-Auth-ExtensibleopenSUSE:Leap 16.0 |
before 0.714.0-bp160.1.1 | 0.714.0-bp160.1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-15689 is a critical vulnerability (CVSS 9.8) in Abeverley Dancer2::plugin::auth::extensible, published August 15, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.60%, the 48th percentile. Fixed in perl-Dancer2-Plugin-Auth-Extensible 0.713.0-1.1.
References
metacpan.org/release/ABEVERLEY/Dancer2-Plugin-Auth-Extensible-0.711/source/lib/Dancer2/Plugin/Auth/Extensible.pm
metacpan.org/release/ABEVERLEY/Dancer2-Plugin-Auth-Extensible-0.712/source/lib/Dancer2/Plugin/Auth/Extensible.pm
metacpan.org/release/ABEVERLEY/Dancer2-Plugin-Auth-Extensible-0.713/source/lib/Dancer2/Plugin/Auth/Extensible.pm
metacpan.org/release/ABEVERLEY/Dancer2-Plugin-Auth-Extensible-0.713/changes
openwall.com/lists/oss-security/2026/08/15/4
nvd.nist.gov/vuln/detail/CVE-2026-15689
github.com/advisories/GHSA-gmj3-5xfg-q3qg
suse.com/security/cve/CVE-2026-15689
bugzilla.suse.com/1275272