CVE-2026-32814 in libheif
요약
\~에 의해 VulDB • 2026. 05. 19.
libheif은 HEIF 및 AVIF 파일 형식의 디코더 및 인코더입니다. 1.21.2 및 이전 버전에서 strict_decoding=false(기본값) 설정으로 HEIF 그리드 이미지를 디코딩할 때, 손상된 타일은 디코딩 실패를 조용히 처리하고 실패 징후 없이 heif_error_Ok를 반환하여 초기화되지 않은 힙 메모리 정보 누수가 발생합니다. 캔버스는 create_clone_image_at_new_size() → plane.alloc() → new (std::nothrow) uint8_t[allocation_size]를 통해 할당되며, 이 과정은 메모리를 0으로 초기화하지 않습니다. 알파 플레인은 fill_plane()를 통해 명시적으로 초기화되지만, Y, Cb, Cr 플레인은 해당 힙 주소에 이전에 존재하던 데이터를 그대로 포함합니다. 실패한 타일의 캔버스 영역은 전혀 쓰여지지 않으며, 초기화되지 않은 힙 데이터를 유지한 채 디코딩된 픽셀 값으로 호출자에게 전달됩니다(Y/Cb/Cr 플레인당 4,096바이트, 총 12,288바이트 이상). 기본 설정으로 그리드 기반 HEIF/AVIF 파일을 디코딩하는 모든 libheif 사용 응용 프로그램은 취약합니다. 조작된 .heic 또는 .avif 파일은 디코딩된 이미지에서 4,096바이트 이상의 힙 메모리가 픽셀 값으로 나타나게 하며, 호출 응용 프로그램은 heif_error_Ok를 받기 때문에 출력 결과에 힙 가비지가 포함되어 있다는 징후를 알 수 없습니다. 서버 측 이미지 처리 환경에서 업로드된 조작된 HEIF 파일이 디코딩 및 재인코딩(예: 썸네일, CDN, 소셜 미디어용 PNG/JPEG)되면 인증 토큰, 데이터베이스 결과 및 다른 사용자의 이미지 데이터와 같은 크로스-사용자 데이터가 누출될 수 있습니다. 이 문제는 버전 1.22.0에서 수정되었습니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.