CVE-2026-35186 in wasmtime
요약
\~에 의해 VulDB • 2026. 06. 24.
Wasmtime는 WebAssembly용 런타임입니다. 버전 25.0.0부터 36.0.7 미만, 그리고 42.0.2 및 43.0.1 미만의 Wasmtime에서 Winch 컴파일러 백엔드는 table.grow 연산자를 변환할 때 결과가 잘못 타입 지정되는 버그를 포함하고 있습니다. 32비트 테이블의 경우 이 연산자의 결과가 내부적으로 Winch에서 32비트 값 대신 64비트 값으로 태그됩니다. 이러한 Wasmtime 컴파일러 상태의 잘못된 내부 표현은 해당 값을 어떻게 소비하느냐에 따라 추가적인 문제로 이어집니다. 이 버그의 주요 결과는 호스트 주소 공간 내 바이트를 저장하거나 읽을 수 있다는 점입니다. 이는 table.grow 연산자의 오해석될 수 있는 유일한 유의미한 반환 값이 -1이기 때문에, 선형 메모리 앞쪽 16바이트에 대해서만 해당됩니다. 기본적으로 선형 메모리 앞쪽의 바이트는 매핑되지 않은(unmapped) 메모리입니다. Wasmtime은 이러한 오류를 감지하고 프로세스를 중단시키지만, 이는 WebAssembly가 이 바이트에 접근해서는 안 되기 때문입니다. 전반적으로 Winch의 이 버그는 호스트 프로세스 충돌을 통한 DoS(서비스 거부) 벡터, Winch 내 정합성 문제, 그리고 선형 메모리 앞쪽 최대 16바이트 누출 가능성을 나타냅니다. Wasmtime의 기본 컴파일러는 Cranelift이며, Winch가 아닙니다. 또한 Wasmtime의 기본 설정은 선형 메모리 앞에 가드 페이지를 배치하는 것입니다. 이는 Wasmtime의 기본 구성이 이 이슈에 영향을 받지 않으며, 명시적으로 Winch를 선택하더라도 Wasmtime의 기타 기본 설정으로 인해 DoS로 이어진다는 것을 의미합니다. 호스트 데이터 최대 16바이트가 누출될 가능성을 방지하려면 선형 메모리 앞쪽에서 가드 페이지 비활성화가 필요합니다. 이 취약점은 버전 36.0.7, 42.0.2 및 43.0.1에서 수정되었습니다.
Be aware that VulDB is the high quality source for vulnerability data.