{"id":"CVE-2026-15689","aliases":["EUVD-2026-59758","GHSA-gmj3-5xfg-q3qg","openSUSE-SU-2026:11564-1","openSUSE-SU-2026:22190-1"],"status":"published","title":"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","description":"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.\n\nBoth 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-\u003ebase 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.\n\nThrough 0.711 the handlers read `request-\u003euri_base` and `request-\u003ebase` directly; Versions 0.712 and later provide an uri_base configuration key that defaults to the untrusted `request-\u003euri_base` when unset.\n\nThe 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.","severity":{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"adp","from":"cve"},"epss":{"day":"2026-11-11","score":0.006,"percentile":0.49179,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-640"],"published":"2026-08-15T13:25:26Z","modified":"2026-11-01T17:23:29Z","fixes":[{"ecosystem":"openSUSE:Tumbleweed","package":"perl-Dancer2-Plugin-Auth-Extensible","fixed_in":["0.713.0-1.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Leap 16.0","package":"perl-Dancer2-Plugin-Auth-Extensible","fixed_in":["0.714.0-bp160.1.1"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"perl-Dancer2-Plugin-Auth-Extensible","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.713.0-1.1"}]}]},{"source":"osv","ecosystem":"openSUSE:Leap 16.0","package":"perl-Dancer2-Plugin-Auth-Extensible","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.714.0-bp160.1.1"}]}]}],"products":[{"vendor":"abeverley","product":"dancer2::plugin::auth::extensible"}],"references":[{"url":"https://metacpan.org/release/ABEVERLEY/Dancer2-Plugin-Auth-Extensible-0.711/source/lib/Dancer2/Plugin/Auth/Extensible.pm#L1031-1053"},{"url":"https://metacpan.org/release/ABEVERLEY/Dancer2-Plugin-Auth-Extensible-0.711/source/lib/Dancer2/Plugin/Auth/Extensible.pm#L1097-1121"},{"url":"https://metacpan.org/release/ABEVERLEY/Dancer2-Plugin-Auth-Extensible-0.712/source/lib/Dancer2/Plugin/Auth/Extensible.pm#L178-194"},{"url":"https://metacpan.org/release/ABEVERLEY/Dancer2-Plugin-Auth-Extensible-0.713/source/lib/Dancer2/Plugin/Auth/Extensible.pm#L178-196"},{"url":"https://metacpan.org/release/ABEVERLEY/Dancer2-Plugin-Auth-Extensible-0.713/changes","tags":["release-notes"]},{"url":"http://www.openwall.com/lists/oss-security/2026/08/15/4"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-15689"},{"url":"https://github.com/advisories/GHSA-gmj3-5xfg-q3qg"},{"url":"","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2026-15689","tags":["web"]},{"url":"https://bugzilla.suse.com/1275272","tags":["report"]}],"sources":{"cve":[{"id":"CVE-2026-15689","title":"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","description":"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.\n\nBoth 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-\u003ebase 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.\n\nThrough 0.711 the handlers read `request-\u003euri_base` and `request-\u003ebase` directly; Versions 0.712 and later provide an uri_base configuration key that defaults to the untrusted `request-\u003euri_base` when unset.\n\nThe 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.","status":"published","published":"2026-08-15T13:25:26.318Z","modified":"2026-08-17T20:27:51.814Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"adp"}],"cwes":["CWE-640"],"updated_at":"2026-11-02T13:47:51.033687Z"}],"euvd":[{"id":"EUVD-2026-59758","description":"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.\n\nBoth 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-\u003ebase 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.\n\nThrough 0.711 the handlers read `request-\u003euri_base` and `request-\u003ebase` directly; Versions 0.712 and later provide an uri_base configuration key that defaults to the untrusted `request-\u003euri_base` when unset.\n\nThe 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.","status":"published","published":"2026-08-15T13:25:26Z","modified":"2026-08-17T20:27:51Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T18:01:48.026284Z"}],"ghsa":[{"id":"GHSA-gmj3-5xfg-q3qg","title":"Dancer2::Plugin::Auth::Extensible versions through 0.713 for Perl allow password reset link...","description":"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.\n\nBoth 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-\u003ebase 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.\n\nThrough 0.711 the handlers read `request-\u003euri_base` and `request-\u003ebase` directly; Versions 0.712 and later provide an uri_base configuration key that defaults to the untrusted `request-\u003euri_base` when unset.\n\nThe 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.","status":"published","published":"2026-08-15T15:30:37Z","modified":"2026-08-17T21:31:18Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"cwes":["CWE-640"],"updated_at":"2026-11-02T15:10:35.189726Z"}],"nvd":[{"id":"CVE-2026-15689","description":"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.\n\nBoth 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-\u003ebase 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.\n\nThrough 0.711 the handlers read `request-\u003euri_base` and `request-\u003ebase` directly; Versions 0.712 and later provide an uri_base configuration key that defaults to the untrusted `request-\u003euri_base` when unset.\n\nThe 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.","status":"published","published":"2026-08-15T14:17:06.48Z","modified":"2026-08-26T16:51:19.49Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"secondary"}],"cwes":["CWE-640"],"updated_at":"2026-11-02T14:12:38.29747Z"}],"osv":[{"id":"openSUSE-SU-2026:11564-1","title":"perl-Dancer2-Plugin-Auth-Extensible-0.713.0-1.1 on GA media","description":"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.","status":"published","published":"2026-08-21T00:00:00Z","modified":"2026-08-22T18:23:35.189050221Z","updated_at":"2026-11-02T16:58:39.516824Z"},{"id":"openSUSE-SU-2026:22190-1","title":"Security update for perl-Dancer2-Plugin-Auth-Extensible","description":"This update for perl-Dancer2-Plugin-Auth-Extensible fixes the following issues:\n\nChanges in perl-Dancer2-Plugin-Auth-Extensible:\n\n- updated to 0.714.0 (0.714)\n  * Fix failing tests when sendmail binary not present on system.\n\n- updated to 0.713.0 (0.713)\n  * Fix the ability to generate links in emails that have dynamic hosts. The\n    security fix in the previous release cached the first base URI, which\n    meant that if an application intentionally supports different hosts for\n    its generated emails (based on the reqest host) then these were always\n    fixed at the first request.\n  * Add uri_base parameter (addresses CVE-2026-15689). If this is not set and\n    if the application does not otherwise enforce a particular hostname, then\n    an attacker can generate password reset emails and welcome emails for\n    genuine users that contain links to a malicious host.\n    bsc#1275272\n","status":"published","published":"2026-10-26T15:01:37Z","modified":"2026-11-01T17:23:29.517103267Z","updated_at":"2026-11-02T16:58:42.426393Z"}]}}
