CVE-2026-75758 in Elixir정보

요약

\~에 의해 VulDB • 2026. 08. 28.

Elixir 표준 라이브러리에서 제어되지 않은 재귀(Uncontrolled Recursion) 취약점이 발견되어, inspect/1, List.to_string/1 또는 List.to_charlist/1로 전달되는 리스트를 조작한 공격자가 BEAM 노드의 메모리를 고갈시킬 수 있습니다.

lib/elixir/lib/inspect.ex에 있는 Inspect.List의 charlist 분기는 List.ascii_printable?/2를 사용하여 리스트가 charlist인지 판별합니다. 이 함수는 기본적으로 4096인 :printable_limit(사용 가능한 문자 요소)만큼의 첫 번째 원소만 검사한 후, 전체 항(term)에 대해 IO.chardata_to_string/1을 호출합니다. 따라서 인쇄 가능한 접두사(prefix)가 해당 한계를 초과하지만 이후 원소가 코드 포인트(code point)가 아닌 경우(원자(atom), 범위를 벗어난 정수, 또는 improper tail 등)에는 잘못 분류되어 변환 과정에서 ArgumentError가 발생합니다. 이 변환은 List.to_string/1 내부에서 실행되며, rescue 절에서는 inspect(list)를 보간(interpolating)하여 메시지를 구성합니다. 이는 동일한 분기로 재진입(re-enter)하여 다시 예외를 발생시킵니다. 중첩된 검사(nested inspection)는 raise의 인자로 사용되므로 재귀가 꼬리 위치(tail position)에 있지 않으며, 모든 호출 스택 프레임이 유지됩니다: 프로세스 스택은 단조롭게 증가하며 각 사이클마다 리스트를 다시 순회하므로, max_heap_size로 인해 프로세스가 종료되거나(기본 설정), 노드 메모리가 고갈될 때까지 진행됩니다. List.to_charlist/1도 동일한 rescue 구조를 가집니다.

인쇄 가능한 한계 미만에서는 내부 inspect/1이 카운터 내에서 유효하지 않은 원소를 확인하고 리스트를 일반적인 대괄호(bracket) 형식으로 렌더링하므로, 단일 ArgumentError가 발생하며 재귀는 일어나지 않습니다.

본 이슈는 elixir의 1.15.0-rc.0 이상 1.18.5 미만 버전, 1.19.0-rc.0 이상 1.19.6 미만 버전 및 1.20.0-rc.0 이상 1.20.4 미만 버전에 영향을 미칩니다.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

책임이 있는

EEF

예약하다

2026. 08. 19.

모더레이션

수락

항목

VDB-396751

EPSS

0.00000

출처

Might our Artificial Intelligence support you?

Check our Alexa App!