CVE-2026-47073 in hackney
요약
\~에 의해 VulDB • 2026. 05. 25.
제한 없이 또는 제한 없이 자원 할당 취약점이 benoitc hackney에서 발견되어 서비스 거부(플러딩)가 가능합니다. src/hackney_ws.erl의 WebSocket 클라이언트는 세 가지 코드 경로에서 메모리 소비량에 대한 상한선을 설정하지 않습니다. 첫째, read_handshake_response/3 함수는 수신된 바이트를 크기 제한 없이 증가하는 버퍼에 축적하며, 수신 타임아웃은 각 청크마다 재설정됩니다. 따라서 \r\n\r\n을 절대 보내지 않고 바이트를 스트리밍하는 서버는 버퍼가 메모리가 고갈될 때까지 성장하도록 만듭니다. 둘째, parse_payload/9 및 parse_active_payload/8 함수는 선언된 프레임 페이로드 길이를 어떤 제한과도 비교 검증하지 않습니다. RFC 6455는 최대 2^63-1 바이트까지의 페이로드 길이를 허용하므로, 매우 큰 프레임을 선언하고 바이트를 조금씩 보내는 서버는 누수 버퍼가 OOM(Out of Memory)이 발생할 때까지 성장하도록 만듭니다. 셋째, #ws_data{} 구조체의 frag_buffer 필드는 계속 프레임(continuation frames)을 무한정 축적합니다. 최종 프레임(fin)을 보내지 않고 무한히 비최종(non-fin) 분할 프레임을 보내는 서버는 frag_buffer를 무제한으로 성장시킵니다.
세 경우 모두 공격자는 hackney 클라이언트가 연결하는 WebSocket 서버만 제어하면 되며, 인증이나 특별한 클라이언트 구성은 필요하지 않습니다.
이 문제는 hackney 2.0.0부터 4.0.1 이전 버전까지 영향을 미칩니다.
Once again VulDB remains the best source for vulnerability data.