{"affected":[{"package":{"ecosystem":"Hex","name":"phoenix_live_view","purl":"pkg:hex/phoenix_live_view"},"ranges":[{"events":[{"introduced":"0.5.0"},{"fixed":"1.0.19"}],"type":"SEMVER"},{"events":[{"introduced":"1.1.0-rc.0"},{"fixed":"1.1.33"}],"type":"SEMVER"},{"events":[{"introduced":"1.2.0-rc.0"},{"fixed":"1.2.9"}],"type":"SEMVER"}],"versions":["0.5.0","0.5.1","0.5.2","0.6.0-dev","0.6.0","0.7.0","0.7.1","0.8.0","0.8.1","0.9.0","0.10.0","0.11.0","0.11.1","0.12.0","0.12.1","0.13.0","0.13.1","0.13.2","0.13.3","0.14.0","0.14.1","0.14.2","0.14.3","0.14.4","0.14.5","0.14.6","0.14.7","0.14.8","0.15.0","0.15.1","0.15.2","0.15.3","0.15.4","0.15.5","0.15.6","0.15.7","0.16.0","0.16.1","0.16.2","0.16.3","0.16.4","0.17.0","0.17.1","0.17.2","0.17.3","0.17.4","0.17.5","0.17.6","0.17.7","0.17.8","0.17.9","0.17.10","0.17.11","0.17.12","0.17.13","0.17.14","0.18.0","0.18.1","0.18.2","0.18.3","0.18.4","0.18.5","0.18.6","0.18.7","0.18.8","0.18.9","0.18.10","0.18.11","0.18.12","0.18.13","0.18.14","0.18.15","0.18.16","0.18.17","0.18.18","0.19.0","0.19.1","0.19.2","0.19.3","0.19.4","0.19.5","0.20.0","0.20.1","0.20.2","0.20.3","0.20.4","0.20.5","0.20.6","0.20.7","0.20.8","0.20.9","0.20.10","0.20.11","0.20.12","0.20.13","0.20.14","0.20.15","0.20.16","0.20.17","1.0.0-rc.0","1.0.0-rc.1","1.0.0-rc.2","1.0.0-rc.3","1.0.0-rc.4","1.0.0-rc.5","1.0.0-rc.6","1.0.0-rc.7","1.0.0-rc.8","1.0.0-rc.9","1.0.0","1.0.1","1.0.2","1.0.3","1.0.4","1.0.5","1.0.6","1.0.7","1.0.8","1.0.9","1.0.10","1.0.11","1.0.12","1.0.13","1.0.14","1.0.15","1.0.16","1.0.17","1.0.18","1.1.0-rc.0","1.1.0-rc.1","1.1.0-rc.2","1.1.0-rc.3","1.1.0-rc.4","1.1.0","1.1.1","1.1.2","1.1.3","1.1.4","1.1.5","1.1.6","1.1.7","1.1.8","1.1.9","1.1.10","1.1.11","1.1.12","1.1.13","1.1.14","1.1.15","1.1.16","1.1.17","1.1.18","1.1.19","1.1.20","1.1.21","1.1.22","1.1.23","1.1.24","1.1.25","1.1.26","1.1.27","1.1.28","1.1.29","1.1.30","1.1.31","1.1.32","1.2.0-rc.0","1.2.0-rc.1","1.2.0-rc.2","1.2.0-rc.3","1.2.0","1.2.1","1.2.2","1.2.3","1.2.4","1.2.5","1.2.6","1.2.7","1.2.8"]},{"ranges":[{"events":[{"introduced":"b20dba3f65a380b2e4868dae03397f13d2daa070"},{"fixed":"0b8c733133466912f81adecaea72b6712370242e"},{"fixed":"1c164f83df0bb922dfff9c60d125da5b0cfd6619"},{"fixed":"2068b304d71907064b159b6bc60c5ad85a876ecf"}],"repo":"https://github.com/phoenixframework/phoenix_live_view","type":"GIT"}]}],"aliases":["GHSA-36m4-rm57-3prf","CVE-2026-64941"],"credits":[{"name":"Eurico Nicacio","type":"FINDER"},{"name":"Steffen Deusch","type":"REMEDIATION_DEVELOPER"},{"name":"José Valim","type":"REMEDIATION_REVIEWER"},{"name":"Jonatan Männchen / EEF","type":"ANALYST"}],"database_specific":{"capec_ids":["CAPEC-3"],"cpe_ids":["cpe:2.3:a:phoenixframework:phoenix_live_view:*:*:*:*:*:*:*:*"],"cwe_ids":["CWE-601"]},"details":"## Summary\n\nURL Redirection to Untrusted Site ('Open Redirect') vulnerability in phoenixframework phoenix\\_live\\_view allows an attacker to send a victim's browser to an origin of the attacker's choosing via a :to value containing ASCII tab, LF or CR.\n\nredirect/2 validates :to through the private validate\\_local\\_url!/2 in lib/phoenix\\_live\\_view.ex, which is intended to guarantee the target is a path within the application. It rejects a leading // and any backslash, but not ASCII tab, LF or CR. Browsers strip those three characters before parsing a URL, so a value such as /<TAB>/example.com passes validation as a path and is then resolved as the scheme-relative URL //example.com. The live navigation functions share the guard but are not affected, because the client expands their target against the current origin. push\\_patch/2 is also affected before 0.7.0, which is when that expansion was added.\n\nThis issue affects phoenix\\_live\\_view: from 0.5.0 before 1.0.19, from 1.1.0-rc.0 before 1.1.33, and from 1.2.0-rc.0 before 1.2.9.\n\n## Workaround\n\nReject any untrusted value containing ASCII tab, LF or CR before passing it as :to to redirect/2, or to push\\_patch/2 before 0.7.0. Alternatively, map client-supplied navigation targets to a fixed set of known-good paths rather than forwarding the value.\n\n## Configuration\n\nThe application must pass an externally influenced value as :to to redirect/2, or to push\\_patch/2 before 0.7.0, for example a return\\_to parameter carried through sign-in or a navigation target taken from a handle\\_event/3 payload.","id":"EEF-CVE-2026-64941","modified":"2026-08-10T11:05:15.156713Z","published":"2026-08-10T11:05:14.571Z","references":[{"type":"ADVISORY","url":"https://github.com/phoenixframework/phoenix_live_view/security/advisories/GHSA-36m4-rm57-3prf"},{"type":"WEB","url":"https://cna.erlef.org/cves/CVE-2026-64941.html"},{"type":"FIX","url":"https://github.com/phoenixframework/phoenix_live_view/commit/0b8c733133466912f81adecaea72b6712370242e"},{"type":"FIX","url":"https://github.com/phoenixframework/phoenix_live_view/commit/1c164f83df0bb922dfff9c60d125da5b0cfd6619"},{"type":"FIX","url":"https://github.com/phoenixframework/phoenix_live_view/commit/2068b304d71907064b159b6bc60c5ad85a876ecf"},{"type":"PACKAGE","url":"https://hex.pm/packages/phoenix_live_view"}],"related":[],"schema_version":"1.7.3","severity":[{"score":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N","type":"CVSS_V4"}],"summary":"Open redirect in Phoenix.LiveView.validate_local_url!/2 via ASCII tab, LF and CR","upstream":[]}