phoenix
Peace of mind from prototype to production
Activity
- Latest release
- Jul 07, 2026
- Total releases
- 176
- Cadence
- ~15 days
- Last 12 months
- 15
Reach
- Stars
- 23.1k
Details
- License
- MIT
- First release
- Apr 21, 2014
| Version | Released | |
|---|---|---|
1.5.15
patch
1 CVE
CVE-2022-42975
GHSA-p8f7-22gq-m7j9
Oct 17, 2022
Phoenix before 1.6.14 mishandles check_origin wildcarding
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
High
None
socket/transport.ex in Phoenix before 1.6.14 mishandles check_origin wildcarding. NOTE: LiveView applications are unaffected by default because of the presence of a LiveView CSRF token. Affected versions
0.1.0
0.10.0
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
+ 115 more Show less
0.2.0
0.2.1
0.2.10
0.2.11
0.2.2
0.2.3
0.2.4
0.2.5
0.2.6
0.2.7
0.2.8
0.2.9
0.3.0
0.3.1
0.4.0
0.4.1
0.5.0
0.6.0
0.6.1
0.6.2
0.7.0
0.7.1
0.7.2
0.8.0
0.9.0
1.0.0
1.0.1
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
Fixed in
1.6.14
References Updated Dec 10, 2025 · Source: OSV.dev |
1.5.15
patch
Dependencies (7)
Changelog
Compare changes
|
|
1.6.17
patch
|
1.6.17
patch
Dependencies (8)
Changelog
Compare changes
|
|
1.7.24
patch
|
1.7.24
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.8.9
patch
|
1.8.9
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.8.8
patch
2 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev |
1.8.8
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.8.7
patch
2 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev |
1.8.7
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.23
patch
2 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev |
1.7.23
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.22
patch
2 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev |
1.7.22
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.8.6
patch
2 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev |
1.8.6
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.8.5
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.8.5
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.8.4
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.8.4
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.8.3
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.8.3
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.8.2
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.8.2
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.8.1
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.8.1
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.8.0
minor
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.8.0
minor
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.8.0-rc.4
pre
2 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev |
1.8.0-rc.4
pre
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.8.0-rc.3
pre
2 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev |
1.8.0-rc.3
pre
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.8.0-rc.2
pre
2 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev |
1.8.0-rc.2
pre
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.8.0-rc.1
pre
2 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev |
1.8.0-rc.1
pre
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.8.0-rc.0
pre
2 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev |
1.8.0-rc.0
pre
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.21
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.7.21
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.20
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.7.20
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.19
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.7.19
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.18
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.7.18
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.17
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.7.17
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.16
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.7.16
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.15
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.7.15
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.14
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.7.14
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.13
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.7.13
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.12
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.7.12
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.11
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.7.11
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.10
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.7.10
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.9
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.7.9
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.8
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.7.8
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.7
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.7.7
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.6
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.7.6
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.5
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.7.5
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.4
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.7.4
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.3
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.7.3
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.2
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.7.2
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.1
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.7.1
patch
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.0
minor
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2026-32689
GHSA-628h-q48j-jr6q
EEF-CVE-2026-32689
May 08, 2026
Phoenix: Long-poll NDJSON body splitting causes large memory allocation
High
Network
Low
None
None
SummaryAn unauthenticated denial-of-service vulnerability in Phoenix's long-poll transport allows a remote client to allocate a large amount of memory with a HTTP request. A handful of concurrent requests can be sufficient to let the node run out of memory. See also https://cna.erlef.org/cves/CVE-2026-32689.html. DetailsThe unoptimised code path exists on the ImpactAnyone who runs a LiveView app with a public Longpoll socket or uses a Affected versions
1.7.0
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
+ 16 more Show less
1.7.2
1.7.20
1.7.21
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
Fixed in
1.7.22
1.8.6
References
Updated May 08, 2026 · Source: OSV.dev |
1.7.0
minor
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.6.16
patch
2 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev |
1.6.16
patch
Dependencies (8)
Changelog
Compare changes
|
|
1.7.0-rc.3
pre
2 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev |
1.7.0-rc.3
pre
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.0-rc.2
pre
2 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev |
1.7.0-rc.2
pre
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.0-rc.1
pre
2 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev |
1.7.0-rc.1
pre
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.7.0-rc.0
pre
2 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev |
1.7.0-rc.0
pre
Dependencies (10)
+ 2 more
Changelog
Compare changes
|
|
1.6.15
patch
2 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev |
1.6.15
patch
Dependencies (8)
Changelog
Compare changes
|
|
1.3.5
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2022-42975
GHSA-p8f7-22gq-m7j9
Oct 17, 2022
Phoenix before 1.6.14 mishandles check_origin wildcarding
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
High
None
socket/transport.ex in Phoenix before 1.6.14 mishandles check_origin wildcarding. NOTE: LiveView applications are unaffected by default because of the presence of a LiveView CSRF token. Affected versions
0.1.0
0.10.0
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
+ 115 more Show less
0.2.0
0.2.1
0.2.10
0.2.11
0.2.2
0.2.3
0.2.4
0.2.5
0.2.6
0.2.7
0.2.8
0.2.9
0.3.0
0.3.1
0.4.0
0.4.1
0.5.0
0.6.0
0.6.1
0.6.2
0.7.0
0.7.1
0.7.2
0.8.0
0.9.0
1.0.0
1.0.1
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
Fixed in
1.6.14
References Updated Dec 10, 2025 · Source: OSV.dev | ||
1.4.18
patch
3 CVEs
CVE-2026-56812
EEF-CVE-2026-56812
GHSA-63mc-hw7g-86rr
Jul 07, 2026
Phoenix JavaScript presence client crashes on presence keys colliding with Object.prototype members in Presence.syncState/syncDiff
Medium
Network
Low
None
None
SummaryImproper Check for Unusual or Exceptional Conditions vulnerability in phoenixframework phoenix (Presence JavaScript client) allows an attacker with ordinary channel access to cause a persistent client-side denial of service against every viewer of a presence channel topic. This vulnerability is associated with program files assets/js/phoenix/presence.js and program routines Presence.syncState and Presence.syncDiff. The Phoenix JavaScript presence client checks whether a presence already exists with a bare truthiness test (state[key]) instead of an own-property check. Presence keys can be attacker-controlled, because applications track presences under a username or id supplied by the client. A user who joins a channel choosing a key that is an Object.prototype member name (__proto__, constructor, toString, hasOwnProperty, and similar) makes that lookup return JavaScript's built-in Object.prototype instead of undefined. Because the prototype is truthy, the code treats it as an existing presence and reads .metas.map(...) off it, which throws an uncaught TypeError. The exception propagates out of the presence message handler, so the local state is never updated and onSync() never fires. Because the malicious key is tracked on the server, it is re-pushed on every presence update and keeps re-throwing, so presence sync stays broken for every viewer of that channel topic until the attacker leaves. Both syncState and syncDiff use the same unsafe existence-check pattern. The impact is limited to the affected topic and is a read-time confusion of the prototype object, not a mutation of Object.prototype (it is not prototype pollution). This issue affects phoenix: from 1.2.0-rc.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundReject or sanitize presence keys that collide with JavaScript Object.prototype member names (for example __proto__, constructor, prototype, toString, hasOwnProperty) before calling Phoenix.Presence.track, or namespace every presence key with a fixed prefix so that no key can equal a prototype member name. Alternatively, derive presence keys from server-controlled, validated values instead of raw user input. ConfigurationThe application must use Phoenix.Presence (or otherwise drive the Phoenix JavaScript presence client) and track presences under keys that are influenced by untrusted client input, for example a username or id chosen by the connecting user. Applications that derive presence keys exclusively from server-controlled, validated values are not affected. Affected versions
1.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
+ 106 more Show less
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 14, 2026 · Source: OSV.dev
CVE-2026-56811
EEF-CVE-2026-56811
GHSA-6983-jfq8-485w
Jul 07, 2026
Phoenix transports do not limit channel joins per connection, enabling process-exhaustion denial of service
High
Network
Low
None
None
SummaryAllocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix (Phoenix.Socket module) allows an unauthenticated attacker to cause a denial of service against any endpoint that mounts a Phoenix socket with a reachable channel transport (WebSocket or LongPoll). This vulnerability is associated with program files lib/phoenix/socket.ex and program routine 'Elixir.Phoenix.Socket':handle_in/4. Phoenix transports do not limit the number of channels that a single transport process may join. Every phx_join message a client sends over one connection starts a persistent channel process, and the socket process accepts an unbounded number of them. A single unauthenticated client can therefore open one WebSocket or LongPoll connection and stream a large number of phx_join messages, spawning hundreds of thousands of channel processes over that one connection and eventually reaching the BEAM maximum process limit. Once the process table is exhausted the virtual machine can no longer start new processes, denying service to legitimate traffic across the whole node. Because the amplification happens inside a single connection, network-layer connection caps and rate limiting do not mitigate it. The fix adds a :max_channels_per_transport option (default 100) that bounds the number of channels a single transport process can join, forcing abusive clients to open many connections instead, where external load balancers and reverse proxies can throttle them. This issue affects phoenix: from 0.11.0 before 1.5.15, from 1.6.0-rc.0 before 1.6.17, from 1.7.0-rc.0 before 1.7.24, and from 1.8.0-rc.0 before 1.8.9. WorkaroundFront the socket endpoint with a reverse proxy that limits the number and rate of channel-join frames per connection, or disable transports that are not needed (for example remove longpoll: true from the socket declaration where the LongPoll transport is not required). Lowering the BEAM +P maximum process limit does not prevent the exhaustion and can make it easier to trigger. ConfigurationThe application must mount a Phoenix socket that defines channels and expose it over HTTP so that a client can reach a channel transport (WebSocket or LongPoll) and send phx_join messages. The WebSocket transport is enabled by default on a mounted socket, while the LongPoll transport is opt-in. Applications that do not mount a socket with channels are not affected. Affected versions
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
1.0.0
1.0.1
+ 133 more Show less
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.14
1.6.15
1.6.16
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
1.7.0
1.7.0-rc.0
1.7.0-rc.1
1.7.0-rc.2
1.7.0-rc.3
1.7.1
1.7.10
1.7.11
1.7.12
1.7.13
1.7.14
1.7.15
1.7.16
1.7.17
1.7.18
1.7.19
1.7.2
1.7.20
1.7.21
1.7.22
1.7.23
1.7.3
1.7.4
1.7.5
1.7.6
1.7.7
1.7.8
1.7.9
1.8.0
1.8.0-rc.0
1.8.0-rc.1
1.8.0-rc.2
1.8.0-rc.3
1.8.0-rc.4
1.8.1
1.8.2
1.8.3
1.8.4
1.8.5
1.8.6
1.8.7
1.8.8
Fixed in
1.5.15
1.6.17
1.7.24
1.8.9
References
Updated Jul 07, 2026 · Source: OSV.dev
CVE-2022-42975
GHSA-p8f7-22gq-m7j9
Oct 17, 2022
Phoenix before 1.6.14 mishandles check_origin wildcarding
7.5
/ 10
High
Network
Low
None
None
Unchanged
None
High
None
socket/transport.ex in Phoenix before 1.6.14 mishandles check_origin wildcarding. NOTE: LiveView applications are unaffected by default because of the presence of a LiveView CSRF token. Affected versions
0.1.0
0.10.0
0.11.0
0.12.0
0.13.0
0.13.1
0.14.0
0.15.0
0.16.0
0.16.1
0.17.0
0.17.1
+ 115 more Show less
0.2.0
0.2.1
0.2.10
0.2.11
0.2.2
0.2.3
0.2.4
0.2.5
0.2.6
0.2.7
0.2.8
0.2.9
0.3.0
0.3.1
0.4.0
0.4.1
0.5.0
0.6.0
0.6.1
0.6.2
0.7.0
0.7.1
0.7.2
0.8.0
0.9.0
1.0.0
1.0.1
1.0.2
1.0.3
1.0.4
1.0.5
1.0.6
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.2.0
1.2.0-rc.0
1.2.0-rc.1
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.3.0
1.3.0-rc.0
1.3.0-rc.1
1.3.0-rc.2
1.3.0-rc.3
1.3.1
1.3.2
1.3.3
1.3.4
1.3.5
1.4.0
1.4.0-rc.0
1.4.0-rc.1
1.4.0-rc.2
1.4.0-rc.3
1.4.1
1.4.10
1.4.11
1.4.12
1.4.13
1.4.14
1.4.15
1.4.16
1.4.17
1.4.18
1.4.2
1.4.3
1.4.4
1.4.5
1.4.6
1.4.7
1.4.8
1.4.9
1.5.0
1.5.0-rc.0
1.5.1
1.5.10
1.5.11
1.5.12
1.5.13
1.5.14
1.5.2
1.5.3
1.5.4
1.5.5
1.5.6
1.5.7
1.5.8
1.5.9
1.6.0
1.6.0-rc.0
1.6.0-rc.1
1.6.1
1.6.10
1.6.11
1.6.12
1.6.13
1.6.2
1.6.3
1.6.4
1.6.5
1.6.6
1.6.7
1.6.8
1.6.9
Fixed in
1.6.14
References Updated Dec 10, 2025 · Source: OSV.dev |