CVE-2026-32689
Long-poll NDJSON body splitting causes unbounded memory allocation in Phoenix
Description
Allocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix allows a denial of service via the long-poll transport's NDJSON body handling. In 'Elixir.Phoenix.Transports.LongPoll':publish/4, when a POST request is received with Content-Type: application/x-ndjson, the request body is split on newline characters using String.split/2 with no limit on the number of resulting segments. An attacker can send a body consisting entirely of newline bytes, causing a 1:1 amplification into a list of empty binaries — a 1 MB body produces approximately one million list elements, an 8 MB body approximately 8.4 million. Each element is then walked by Enum.map, materializing another list of the same size. This exhausts BEAM memory and schedulers, crashing the node and terminating all active sessions. A session token required to reach the vulnerable endpoint is freely obtainable by any client via an unauthenticated GET request to the same URL with a matching Origin header, making this attack effectively unauthenticated. This issue affects phoenix: from 1.7.0 before 1.7.22 and 1.8.6.
INFO
Published Date :
May 5, 2026, 4:16 p.m.
Last Modified :
Oct. 26, 2026, 7:10 p.m.
Remotely Exploit :
Yes !
Source :
6b3ad84c-e1a6-4bf7-a703-f496b71e49db
CVSS Scores
| Score | Version | Severity | Vector | Exploitability Score | Impact Score | Source |
|---|---|---|---|---|---|---|
| CVSS | 134c704f-9b21-4f2e-91b3-4a467353bcc0 | |||||
| CVSS 4.0 | HIGH | 6b3ad84c-e1a6-4bf7-a703-f496b71e49db | ||||
| CVSS 4.0 | HIGH | 6b3ad84c-e1a6-4bf7-a703-f496b71e49db |
Solution
- Update phoenix to version 1.7.22 or later.
- Update phoenix to version 1.8.6 or later.
Public PoC/Exploit Available at Github
CVE-2026-32689 has a 1 public
PoC/Exploit available at Github.
Go to the Public Exploits tab to see the list.
References to Advisories, Solutions, and Tools
Here, you will find a curated list of external links that provide in-depth
information, practical solutions, and valuable tools related to
CVE-2026-32689.
CWE - Common Weakness Enumeration
While CVE identifies
specific instances of vulnerabilities, CWE categorizes the common flaws or
weaknesses that can lead to vulnerabilities. CVE-2026-32689 is
associated with the following CWEs:
Common Attack Pattern Enumeration and Classification (CAPEC)
Common Attack Pattern Enumeration and Classification
(CAPEC)
stores attack patterns, which are descriptions of the common attributes and
approaches employed by adversaries to exploit the CVE-2026-32689
weaknesses.
We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).
None
Elixir Shell Erlang C++ Makefile
Results are limited to the first 15 repositories due to potential performance issues.
The following list is the news that have been mention
CVE-2026-32689 vulnerability anywhere in the article.
The following table lists the changes that have been made to the
CVE-2026-32689 vulnerability over time.
Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.
-
CVE Translated by [email protected]
Oct. 26, 2026
Action Type Old Value New Value Added Translation Title: phoenix de phoenixframework, Description: Vulnerabilidad de asignación de recursos sin límites ni estrangulamiento en phoenixframework phoenix permite una denegación de servicio a través del manejo del cuerpo NDJSON del transporte long-poll. En ’Elixir.Phoenix.Transports.LongPoll’:publish/4, cuando se recibe una solicitud POST con Content-Type: application/x-ndjson, el cuerpo de la solicitud se divide en caracteres de nueva línea usando String.split/2 sin límite en el número de segmentos resultantes. Un atacante puede enviar un cuerpo que consiste enteramente en bytes de nueva línea, causando una amplificación 1:1 en una lista de binarios vacíos - un cuerpo de 1 MB produce aproximadamente un millón de elementos de lista, un cuerpo de 8 MB aproximadamente 8.4 millones. Cada elemento es luego recorrido por Enum.map, materializando otra lista del mismo tamaño. Esto agota la memoria y los planificadores de BEAM, colapsando el nodo y terminando todas las sesiones activas. Un token de sesión requerido para alcanzar el endpoint vulnerable es libremente obtenible por cualquier cliente a través de una solicitud GET no autenticada a la misma URL con una cabecera Origin coincidente, haciendo que este ataque sea efectivamente no autenticado. Este problema afecta a phoenix: desde 1.7.0 antes de 1.7.22 y 1.8.6. -
CVE Modified by 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
Jun. 17, 2026
Action Type Old Value New Value Added Affected [{'cpes': ['cpe:2.3:a:phoenixframework:phoenix:*:*:*:*:*:*:*:*'], 'repo': 'https://github.com/phoenixframework/phoenix', 'vendor': 'phoenixframework', 'modules': ["'Elixir.Phoenix.Transports.LongPoll'"], 'product': 'phoenix', 'versions': [{'status': 'affected', 'version': '1.7.0', 'lessThan': '1.7.22', 'versionType': 'semver'}, {'status': 'affected', 'version': '1.8.0', 'lessThan': '1.8.6', 'versionType': 'semver'}], 'packageURL': 'pkg:hex/phoenix', 'packageName': 'phoenix', 'programFiles': ['lib/phoenix/transports/long_poll.ex'], 'collectionURL': 'https://repo.hex.pm', 'defaultStatus': 'unaffected', 'programRoutines': [{'name': "'Elixir.Phoenix.Transports.LongPoll':publish/4"}]}, {'cpes': ['cpe:2.3:a:phoenixframework:phoenix:*:*:*:*:*:*:*:*'], 'repo': 'https://github.com/phoenixframework/phoenix', 'vendor': 'phoenixframework', 'modules': ["'Elixir.Phoenix.Transports.LongPoll'"], 'product': 'phoenix', 'versions': [{'status': 'affected', 'changes': [{'at': '1a67c61ff9ce0a7711662ac7354861917a7c80f7', 'status': 'unaffected'}, {'at': '912ea181fd247c21dbcc49fb97d0053b947d81bf', 'status': 'unaffected'}], 'version': '2674c6ea30634667f9b09966b90269393b445953', 'lessThan': '*', 'versionType': 'git'}], 'packageURL': 'pkg:github/phoenixframework/phoenix', 'packageName': 'phoenixframework/phoenix', 'programFiles': ['lib/phoenix/transports/long_poll.ex'], 'collectionURL': 'https://github.com', 'defaultStatus': 'unaffected', 'programRoutines': [{'name': "'Elixir.Phoenix.Transports.LongPoll':publish/4"}]}] -
CVE Modified by 134c704f-9b21-4f2e-91b3-4a467353bcc0
Jun. 17, 2026
Action Type Old Value New Value Added SSVC {'id': 'CVE-2026-32689', 'role': 'CISA Coordinator', 'options': [{'exploitation': 'none'}, {'automatable': 'yes'}, {'technicalImpact': 'partial'}], 'version': '2.0.3', 'timestamp': '2026-05-05T18:37:12.444769Z'} -
New CVE Received by 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
May. 05, 2026
Action Type Old Value New Value Added Description Allocation of Resources Without Limits or Throttling vulnerability in phoenixframework phoenix allows a denial of service via the long-poll transport's NDJSON body handling. In 'Elixir.Phoenix.Transports.LongPoll':publish/4, when a POST request is received with Content-Type: application/x-ndjson, the request body is split on newline characters using String.split/2 with no limit on the number of resulting segments. An attacker can send a body consisting entirely of newline bytes, causing a 1:1 amplification into a list of empty binaries — a 1 MB body produces approximately one million list elements, an 8 MB body approximately 8.4 million. Each element is then walked by Enum.map, materializing another list of the same size. This exhausts BEAM memory and schedulers, crashing the node and terminating all active sessions. A session token required to reach the vulnerable endpoint is freely obtainable by any client via an unauthenticated GET request to the same URL with a matching Origin header, making this attack effectively unauthenticated. This issue affects phoenix: from 1.7.0 before 1.7.22 and 1.8.6. Added CVSS V4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X Added CWE CWE-770 Added Reference https://cna.erlef.org/cves/CVE-2026-32689.html Added Reference https://github.com/phoenixframework/phoenix/commit/1a67c61ff9ce0a7711662ac7354861917a7c80f7 Added Reference https://github.com/phoenixframework/phoenix/commit/912ea181fd247c21dbcc49fb97d0053b947d81bf Added Reference https://github.com/phoenixframework/phoenix/security/advisories/GHSA-628h-q48j-jr6q Added Reference https://osv.dev/vulnerability/EEF-CVE-2026-32689