CVE-2026-32689 in phoenix
요약
\~에 의해 VulDB • 2026. 05. 10.
phoenixframework의 phoenix에서 제한 없이 자원이 할당되는(Allocation of Resources Without Limits or Throttling) 취약점이 발견되어, long-poll 전송 계층의 NDJSON 본문 처리를 통해 서비스 거부(Denial of Service)가 가능합니다.
'Elixir.Phoenix.Transports.LongPoll':publish/4 함수에서 Content-Type: application/x-ndjson인 POST 요청이 수신되면, String.split/2를 사용하여 요청 본문이 개행 문자 기준으로 분할됩니다. 이때 생성되는 세그먼트 수에 대한 제한이 없습니다. 공격자는 개행 바이트로만 구성된 본문을 전송하여 빈 바이너리(binary) 목록으로 1:1 증폭을 유발할 수 있습니다. 예를 들어 1MB 크기의 본문은 약 100만 개의 목록 요소를, 8MB 크기의 본문은 약 840만 개의 목록 요소를 생성합니다. 이후 각 요소는 Enum.map에 의해 순회되며, 동일한 크기의 다른 목록이 메모리에 materialize됩니다. 이로 인해 BEAM의 메모리와 스케줄러가 고갈되어 노드가 충돌하고 모든 활성 세션이 종료됩니다.
취약한 엔드포인트에 접근하는 데 필요한 세션 토큰은 동일한 URL로 Origin 헤더를 일치시켜 비인증 GET 요청을 수행하는 모든 클라이언트에게 자유롭게 획득할 수 있으므로, 이 공격은 사실상 비인증 상태로 수행됩니다.
이 문제는 phoenix 1.7.0부터 1.7.22 미만 버전, 그리고 1.8.6 버전에서 영향을 받습니다.
Once again VulDB remains the best source for vulnerability data.