chore(deps): update dependency phoenix_live_view to v1.2.9 [security] - autoclosed #579

Closed
renovate wants to merge 1 commit from renovate/hex-phoenix_live_view-vulnerability into main
Collaborator

This PR contains the following updates:

Package Type Update Change
phoenix_live_view (source) prod patch 1.2.5 → 1.2.9

CVE-2026-58228 / EEF-CVE-2026-58228 / GHSA-5cgh-g58j-m9cq

More information

Details

Summary

Cross-site scripting vulnerability in phoenixframework phoenix_live_view allows an attacker to bypass URL scheme validation and execute JavaScript in a victim's browser session.

The Phoenix.LiveView.Utils.valid_destination!/2 and Phoenix.LiveView.Utils.valid_live_navigation_destination!/2 functions in lib/phoenix_live_view/utils.ex rely on an internal uri_scheme/1 helper that only detects a scheme when the input's first byte is an ASCII letter. Inputs beginning with an ASCII control character or space fall through to a nil-returning clause, causing the URL to be treated as a safe relative path.

Standard browsers implement the WHATWG URL parser, which strips leading C0 control and space characters before parsing. As a result, an input such as " javascript:alert(1)" is passed unchanged into <.link href={...}> and, when clicked, is parsed by the browser as a javascript: URL that executes attacker-controlled script in the victim's session.

Applications that render user-supplied URLs (for example profile links, redirect targets, or external references) via <.link href={...}> are affected.

This issue affects phoenix_live_view: from 1.2.2 before 1.2.7.

Workarounds

Strip leading ASCII control and space bytes (code points 0x00 through 0x20) from any untrusted URL before passing it to <.link href={...}>, or reject such inputs outright. This aligns application-level validation with the WHATWG URL parser used by browsers and prevents the scheme-detection bypass.

Severity

  • CVSS Score: 5.1 / 10 (Medium)
  • Vector String: CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:L/VI:L/VA:N/SC:H/SI:H/SA:N

References

This data is provided by OSV.


Open redirect in Phoenix.LiveView.validate_local_url!/2 via ASCII tab, LF and CR

CVE-2026-64941 / EEF-CVE-2026-64941 / GHSA-36m4-rm57-3prf

More information

Details

Summary

URL 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.

redirect/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.

This 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.

Workarounds

Reject 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.

Configurations

The 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.

Severity

  • CVSS Score: 2.1 / 10 (Low)
  • Vector String: 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

References

This data is provided by OSV.


Release Notes

phoenixframework/phoenix_live_view (phoenix_live_view)

v1.2.9

Compare Source

Security fixes
  • CVE-2026-64941: Fix open redirect in redirect/2 via ASCII tab, LF and CR
Bug fixes
  • Fix live components being wrongly destroyed in some rare cases (#​4350)
  • Ensure parent navigation succeeds with a blocked child (#​4359)
Enhancements
  • Add internal debug tooling to customize clientside rendering (#​4364)

v1.2.8

Compare Source

Enhancements
  • Allow cancelling client-side navigation (#​4332)
    You can now listen for the phx:before-navigate event and call event.preventDefault() to cancel the navigation synchronously.
    This is mostly useful to prevent a "do you really want to leave" scenario when a user has unsaved changes, combined with a beforeunload listener.
  • Sign LiveView upload tokens as :local to avoid node names being included in the token
  • Ensure async tasks exit gracefully in LiveView tests (#​4348)
  • Allow opting focused form elements into DOM patching (#​4339)
Bug fixes
  • Fix server close handler not being reattached after a manual disconnect + connect (#​4341)
  • Fix detail.lock() promise in phx:push event never resolving (#​4351)
  • Fix live components not being correctly patched when changing their DOM ID (#​4338)
  • Gracefully handle missing upload refs (#​4354)

v1.2.7

Compare Source

Security fixes
  • CVE-2026-58228: Fix scheme validation bypass in Phoenix.LiveView.Utils

v1.2.6

Compare Source

Bug fixes
  • Fix HTMLFormatter inserting extra characters in template with multi-codepoint emojis (#​4321)

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate.

This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [phoenix_live_view](https://hex.pm/packages/phoenix_live_view) ([source](https://github.com/phoenixframework/phoenix_live_view)) | prod | patch | `1.2.5` → `1.2.9` | --- ### Scheme validation bypass in Phoenix.LiveView.Utils leads to XSS via <.link> [CVE-2026-58228](https://nvd.nist.gov/vuln/detail/CVE-2026-58228) / EEF-CVE-2026-58228 / [GHSA-5cgh-g58j-m9cq](https://github.com/advisories/GHSA-5cgh-g58j-m9cq) <details> <summary>More information</summary> #### Details ##### Summary Cross-site scripting vulnerability in phoenixframework phoenix\_live\_view allows an attacker to bypass URL scheme validation and execute JavaScript in a victim's browser session. The Phoenix.LiveView.Utils.valid\_destination!/2 and Phoenix.LiveView.Utils.valid\_live\_navigation\_destination!/2 functions in lib/phoenix\_live\_view/utils.ex rely on an internal uri\_scheme/1 helper that only detects a scheme when the input's first byte is an ASCII letter. Inputs beginning with an ASCII control character or space fall through to a nil-returning clause, causing the URL to be treated as a safe relative path. Standard browsers implement the WHATWG URL parser, which strips leading C0 control and space characters before parsing. As a result, an input such as " javascript:alert(1)" is passed unchanged into <.link href={...}> and, when clicked, is parsed by the browser as a javascript: URL that executes attacker-controlled script in the victim's session. Applications that render user-supplied URLs (for example profile links, redirect targets, or external references) via <.link href={...}> are affected. This issue affects phoenix\_live\_view: from 1.2.2 before 1.2.7. ##### Workarounds Strip leading ASCII control and space bytes (code points 0x00 through 0x20) from any untrusted URL before passing it to <.link href={...}>, or reject such inputs outright. This aligns application-level validation with the WHATWG URL parser used by browsers and prevents the scheme-detection bypass. #### Severity - CVSS Score: 5.1 / 10 (Medium) - Vector String: `CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:A/VC:L/VI:L/VA:N/SC:H/SI:H/SA:N` #### References - [https://github.com/phoenixframework/phoenix_live_view/security/advisories/GHSA-5cgh-g58j-m9cq](https://github.com/phoenixframework/phoenix_live_view/security/advisories/GHSA-5cgh-g58j-m9cq) - [https://cna.erlef.org/cves/CVE-2026-58228.html](https://cna.erlef.org/cves/CVE-2026-58228.html) - [https://github.com/phoenixframework/phoenix_live_view/commit/86165533e311469a1b62093fd182d9d874de8106](https://github.com/phoenixframework/phoenix_live_view/commit/86165533e311469a1b62093fd182d9d874de8106) - [https://hex.pm/packages/phoenix_live_view](https://hex.pm/packages/phoenix_live_view) This data is provided by [OSV](https://osv.dev/vulnerability/EEF-CVE-2026-58228). </details> --- ### Open redirect in Phoenix.LiveView.validate_local_url!/2 via ASCII tab, LF and CR [CVE-2026-64941](https://nvd.nist.gov/vuln/detail/CVE-2026-64941) / EEF-CVE-2026-64941 / [GHSA-36m4-rm57-3prf](https://github.com/advisories/GHSA-36m4-rm57-3prf) <details> <summary>More information</summary> #### Details ##### Summary URL 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. `redirect/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. This 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. ##### Workarounds Reject 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. ##### Configurations The 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. #### Severity - CVSS Score: 2.1 / 10 (Low) - Vector String: `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` #### References - [https://github.com/phoenixframework/phoenix_live_view/security/advisories/GHSA-36m4-rm57-3prf](https://github.com/phoenixframework/phoenix_live_view/security/advisories/GHSA-36m4-rm57-3prf) - [https://cna.erlef.org/cves/CVE-2026-64941.html](https://cna.erlef.org/cves/CVE-2026-64941.html) - [https://github.com/phoenixframework/phoenix_live_view/commit/0b8c733133466912f81adecaea72b6712370242e](https://github.com/phoenixframework/phoenix_live_view/commit/0b8c733133466912f81adecaea72b6712370242e) - [https://github.com/phoenixframework/phoenix_live_view/commit/1c164f83df0bb922dfff9c60d125da5b0cfd6619](https://github.com/phoenixframework/phoenix_live_view/commit/1c164f83df0bb922dfff9c60d125da5b0cfd6619) - [https://github.com/phoenixframework/phoenix_live_view/commit/2068b304d71907064b159b6bc60c5ad85a876ecf](https://github.com/phoenixframework/phoenix_live_view/commit/2068b304d71907064b159b6bc60c5ad85a876ecf) - [https://hex.pm/packages/phoenix_live_view](https://hex.pm/packages/phoenix_live_view) This data is provided by [OSV](https://osv.dev/vulnerability/EEF-CVE-2026-64941). </details> --- ### Release Notes <details> <summary>phoenixframework/phoenix_live_view (phoenix_live_view)</summary> ### [`v1.2.9`](https://github.com/phoenixframework/phoenix_live_view/releases/tag/v1.2.9) [Compare Source](https://github.com/phoenixframework/phoenix_live_view/compare/v1.2.8...v1.2.9) ##### Security fixes - [CVE-2026-64941](https://github.com/phoenixframework/phoenix_live_view/security/advisories/GHSA-36m4-rm57-3prf): Fix open redirect in `redirect/2` via ASCII tab, LF and CR ##### Bug fixes - Fix live components being wrongly destroyed in some rare cases ([#&#8203;4350](https://github.com/phoenixframework/phoenix_live_view/issues/4350)) - Ensure parent navigation succeeds with a blocked child ([#&#8203;4359](https://github.com/phoenixframework/phoenix_live_view/issues/4359)) ##### Enhancements - Add internal debug tooling to customize clientside rendering ([#&#8203;4364](https://github.com/phoenixframework/phoenix_live_view/pull/4364)) ### [`v1.2.8`](https://github.com/phoenixframework/phoenix_live_view/releases/tag/v1.2.8) [Compare Source](https://github.com/phoenixframework/phoenix_live_view/compare/v1.2.7...v1.2.8) ##### Enhancements - Allow cancelling client-side navigation ([#&#8203;4332](https://github.com/phoenixframework/phoenix_live_view/pull/4332)) You can now listen for the `phx:before-navigate` event and call `event.preventDefault()` to cancel the navigation synchronously. This is mostly useful to prevent a "do you really want to leave" scenario when a user has unsaved changes, combined with a `beforeunload` listener. - Sign LiveView upload tokens as `:local` to avoid node names being included in the token - Ensure async tasks exit gracefully in LiveView tests ([#&#8203;4348](https://github.com/phoenixframework/phoenix_live_view/pull/4348)) - Allow opting focused form elements into DOM patching ([#&#8203;4339](https://github.com/phoenixframework/phoenix_live_view/pull/4339)) ##### Bug fixes - Fix server close handler not being reattached after a manual disconnect + connect ([#&#8203;4341](https://github.com/phoenixframework/phoenix_live_view/pull/4341)) - Fix `detail.lock()` promise in `phx:push` event never resolving ([#&#8203;4351](https://github.com/phoenixframework/phoenix_live_view/issues/4351)) - Fix live components not being correctly patched when changing their DOM ID ([#&#8203;4338](https://github.com/phoenixframework/phoenix_live_view/pull/4338)) - Gracefully handle missing upload refs ([#&#8203;4354](https://github.com/phoenixframework/phoenix_live_view/pull/4354)) ### [`v1.2.7`](https://github.com/phoenixframework/phoenix_live_view/releases/tag/v1.2.7) [Compare Source](https://github.com/phoenixframework/phoenix_live_view/compare/v1.2.6...v1.2.7) ##### Security fixes - [CVE-2026-58228](https://github.com/phoenixframework/phoenix_live_view/security/advisories/GHSA-5cgh-g58j-m9cq): Fix scheme validation bypass in `Phoenix.LiveView.Utils` ### [`v1.2.6`](https://github.com/phoenixframework/phoenix_live_view/releases/tag/v1.2.6) [Compare Source](https://github.com/phoenixframework/phoenix_live_view/compare/v1.2.5...v1.2.6) ##### Bug fixes - Fix HTMLFormatter inserting extra characters in template with multi-codepoint emojis ([#&#8203;4321](https://github.com/phoenixframework/phoenix_live_view/issues/4321)) </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNjUuMiIsInVwZGF0ZWRJblZlciI6IjQzLjE2NS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJhdXRvbWF0ZWQiLCJkZXBlbmRlbmNpZXMiLCJyZW5vdmF0ZSIsInNlY3VyaXR5Il19-->
chore(deps): update dependency phoenix_live_view to v1.2.9 [security]
Some checks reported errors
continuous-integration/drone/push Build was killed
6e2334a747
renovate force-pushed renovate/hex-phoenix_live_view-vulnerability from 6e2334a747
Some checks reported errors
continuous-integration/drone/push Build was killed
to a28ee64550
All checks were successful
continuous-integration/drone/push Build is passing
2026-10-08 21:24:09 +02:00
Compare
renovate force-pushed renovate/hex-phoenix_live_view-vulnerability from a28ee64550
All checks were successful
continuous-integration/drone/push Build is passing
to d47b5f60ba
All checks were successful
continuous-integration/drone/push Build is passing
2026-10-11 02:04:35 +02:00
Compare
renovate force-pushed renovate/hex-phoenix_live_view-vulnerability from d47b5f60ba
All checks were successful
continuous-integration/drone/push Build is passing
to 3bd92f16c9
All checks were successful
continuous-integration/drone/push Build is passing
2026-10-12 02:04:10 +02:00
Compare
renovate changed title from chore(deps): update dependency phoenix_live_view to v1.2.9 [security] to chore(deps): update dependency phoenix_live_view to v1.2.9 [security] - autoclosed 2026-10-12 12:14:43 +02:00
renovate closed this pull request 2026-10-12 12:14:43 +02:00
Some checks are pending
continuous-integration/drone/push Build is passing
continuous-integration/drone/promote/production
Required

Pull request closed

Sign in to join this conversation.
No description provided.