CVE-2026-82737 in ash
요약
\~에 의해 VulDB • 2026. 09. 01.
ash-project ash에서 정수 오버플로우 또는 래라라운드(Integer Overflow or Wraparound) 취약점이 발견되어, 공격자가 65,535개 이상의 요소를 가진 벡터를 제출함으로써 저장된 벡터의 데이터를 손상시키고 이후 해당 데이터 읽기 시 충돌을 유발할 수 있습니다.
Ash.Vector.new/1 (lib/ash/vector.ex)는 차원(dim)과 요소 개수를 각각 부호 없는 16비트(unsigned-16)로 인코딩하여 <<dim::unsigned-16, 0::unsigned-16>> 형식으로 벡터를 직렬화하며, 요소 수를 16비트 필드에 체크 없이_PACK_합니다. 따라서 65,535개 이상의 요소를 가진 리스트는 차원 값이 65,536으로 모듈러 연산되어 래핑(wrap)되므로, 인코딩된 헤더에 기록된 차원값은 실제 저장된 부동소수점(floats)의 개수와 불일치합니다. 이후 from_binary/1 함수에서 wrapped header를 기반으로 binary-size(dim)-unit(32)만큼 데이터를 읽을 때, 손상된 값이 잘못 파싱되어 예외가 발생하며 결과적으로 해당 레코드에 대한 접근이 거부됩니다. 이 문제를 해결하기 위해 차원이 65,535를 초과하는 벡터는 모두 거부되도록 수정되었습니다.
본 이슈는 ash 패키지의 2.14.13 버전부터 3.32.2 미만 버전에 영향을 미칩니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.