$ the-wire · showcase
PHOENIX LIVE VIEW PATCHES OPEN REDIRECT VULNERABILITY ACROSS TWO VERSIONS
By RepoJournal · Filed · About Elixir & Phoenix · Composed from the cited sources · methodology
Phoenix Live View shipped emergency security fixes for CVE-2026-64941 in both v1.1.33 and v1.2.9 to close an open redirect hole via ASCII control characters in the redirect/2 function.
The vulnerability lets attackers bypass redirect validation by injecting tab, line feed, or carriage return characters, a classic control character bypass that affects any app using live navigation [1] [2]. Version 1.2.9 stacks the security fix with three bug fixes including a rare live component destruction issue and parent navigation blocking [2]. Meanwhile, Phoenix core shipped v1.8.10 with its own quiet but important fixes: the code reloader's false "restart your server" messages are gone [3], websocket options got restored to the JavaScript client [3], and longpoll transport now properly retries on batch POST timeout [3]. On the JavaScript side, a buffered push on unjoin'd channels was leaking memory by never releasing stale reply bindings from the first startTimeout run [4], a sharp catch that prevents resource exhaustion in high-churn connection scenarios. Elixir core updated its design anti-patterns documentation [5], keeping the foundation current.
Action items
- → Upgrade Phoenix Live View to v1.1.33 or v1.2.9 before next deploy - closes CVE-2026-64941 phoenixframework/phoenix_live_view [immediate]
- → Update Phoenix to v1.8.10 for code reloader and websocket fixes phoenixframework/phoenix [plan]
- → Monitor for redirect-based attacks if on older Live View versions phoenixframework/phoenix_live_view [monitor]
References
- [1] v1.1.33 ↗ phoenixframework/phoenix_live_view
- [2] v1.2.9 ↗ phoenixframework/phoenix_live_view
- [3] v1.8.10 ↗ phoenixframework/phoenix
- [4] release the stale reply binding of a buffered push (#6788) ↗ phoenixframework/phoenix
- [5] Update design-anti-patterns.md ↗ elixir-lang/elixir