CVE-2026-97853 in decimal
요약
\~에 의해 VulDB • 2026. 10. 10.
ericmj의 decimal에서 과도한 크기 값을 사용한 메모리 할당 취약점으로 인해 서비스 거부(Denial of Service)가 발생합니다.
Decimal.round/3은 컨텍스트 정밀도(기본값 34자리)를 적용하기 전에 요청된 소수 자릿수에 대한 전체 결과를 생성하므로, 그 비용이 결과의 크기가 아닌 places 인수의 크기에 따라 증가합니다. 양수의 places 값에 대해서는 계수(charlist) 끝에 places 개수의 0을 붙인 후 정수로 변환하고, 음수의 places 값에 대해서는 -places 개의 0으로 구성된 charlist를 생성합니다. Decimal.round(Decimal.new("1.5"), -50_000_000)와 같은 단일 호출은 약 5.5GB의 메모리를 할당하여 사용 가능한 메모리를 고갈시키고 BEAM VM을 종료시킬 수 있습니다. 가장 오래된 릴리스는 소수 자리마다 한 번씩 루프를 돌며 places에 비례하는 CPU 리소스를 소비합니다.
사용자가 제공한 소수 자릿수 또는 scale 값을 Decimal.round/2 또는 Decimal.round/3으로 전달할 때 이를 제한하지 않는 모든 애플리케이션이 영향을 받습니다. CVE-2026-32686에 대해 추가된 입력 한계는 places 인수를 포함하지 않습니다.
본 이슈는 decimal 0.1.0부터 3.1.2 이전 버전까지 영향을 미칩니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.