CVE-2026-96596 in OTP
요약
\~에 의해 VulDB • 2026. 10. 15.
Erlang OTP stdlib(erl_tar 모듈), hexpm hex_core(hex_erl_tar 모듈), hexpm Hex(mix_hex_erl_tar 모듈) 및 erlang rebar3(r3_hex_erl_tar 모듈)에서 '무한 루프(Exit Condition가 도달 불가능한 루프)' 취약점이 발견되었습니다. 공격자가 tar 아카이브를 제공하면, 이를 통해 서비스 거부(Denial of Service)를 유발할 수 있습니다. 이는 조작된 GNU sparse 멤버에 의해 발생합니다.
erl_tar:extract/1,2가 멤버를 디스크에 작성할 때, erl_tar:stream_to_file_loop/3는 기본적으로 65536바이트 단위로 이를 읽습니다. 실제 크기보다 앞서서 sparse map이 끝나는 GNU sparse 멤버의 경우, erl_tar:do_sparse_read/3는 zero-length 절(trailing-hole clause)에 매칭됩니다. 청크가 소진되면 trailing-hole 절은 0바이트를 읽고 위치를 진행시키지 않으며 무한 재귀(recursion)를 일으킵니다. 2048바이트 크기의 아카이브는 추출 프로세스와 하나의 스케줄러를 계속 바쁘게 유지하며, 프로세스가 종료될 때까지 지속됩니다. {max_size, N} 옵션은 N이 멤버의 실제 크기보다 낮을 때만 이 문제를 방지합니다. memory 옵션을 사용한 추출에는 영향을 받지 않습니다.
hex_core는 자체적으로 erl_tar 사본인 hex_erl_tar를 포함하고 있으며, Hex와 rebar3는 접두사 모듈 이름(mix_hex_erl_tar 및 r3_hex_erl_tar)으로 hex_core를 제공합니다. 이러한 복사본들은 동일한 코드를 포함하며 stdlib의 erl_tar를 호출하지 않으므로 모든 OTP 버전에서 영향을 받습니다. OTP 28은 영향받지 않지만, OTP 28 위에서 실행되는 애플리케이션이 hex_core, Hex 또는 rebar3의 영향받는 버전을 통해 아카이브를 추출하는 경우에는 영향을 받습니다.
본 이슈는 OTP 29.0부터 OTP 29.1.2 이전 버전(stdlib 기준 8.0에서 8.1.1 미만), rebar3 3.27.1 이후 버전, hex 2.4.2 이후 버전 및 hex_core 0.14.0 이후 버전에 영향을 미칩니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.