CVE-2026-84384
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 43 - wyżej niż 43% wszystkich znanych CVE
Streszczenie
libheif to dekoder i koder formatów HEIF i AVIF. Od wersji 1.19.0 do 1.23.2 spreparowane metadane MIME HEIF lub AVIF oraz dane obrazu unci mogą powodować, że decompress_brotli() i do_inflate() zwiększają skumulowane wyjście bez skutecznego limitu rozmiaru lub rozliczania MemoryHandle. Ścieżka brotli nie ma ograniczenia wyjścia, a ścieżka zlib sprawdza tylko mały bufor tymczasowy w gałęzi, do której prawidłowe strumienie nie docierają, a nakładające się jednostki icef mogą wielokrotnie dekompresować ten sam ładunek. HeifContext::interpret_heif_file_images() przetwarza wiele skompresowanych elementów metadanych podczas otwierania pliku, co pozwala małemu plikowi zużyć nieograniczoną pamięć i zatrzymać proces. Problem naprawiono w wersji 1.23.2.
Ocena ryzyka
Mały złośliwy plik HEIF/AVIF może spowodować nieograniczone zużycie pamięci i zatrzymanie procesu, prowadząc do odmowy usługi.
Rekomendacja
Zaktualizuj libheif do wersji 1.23.2 lub nowszej.
Inne podatności w libheif
Zobacz wszystkie- GHSA-rgj7-g3m4-5g8cWysokie
Wykryto i naprawiono kilka podatności (dwie o krytycznym poziomie CVSSv3) w zależności libheif. Mogą one prowadzić do zdalnego wykonania kodu (RCE) na systemach Linux bazujących na glibc pod pewnymi warunkami.
- CVE-2026-84383Krytyczne
libheif w wersjach od 1.22.0 do 1.23.2 ma podatność na przepełnienie sterty (heap out-of-bounds write). Specjalnie spreparowany plik HEIF/HEIC/AVIF z zagnieżdżonymi referencjami iden i auxl powoduje dodanie duplikatów kanałów Alpha z różną głębią bitową, a funkcja scale_nearest_neighbor() alokuje mniejszy bufor niż potrzeba, prowadząc do zapisu poza pamięć.
- GHSA-2xp9-vwfh-vxw4Krytyczne
Podatność w bibliotece libheif używanej przez sharp (którą Next.js używa do optymalizacji obrazów) może prowadzić do zdalnego wykonania kodu podczas optymalizacji plików AVIF. Do czasu rozpowszechnienia poprawki optymalizacja plików AVIF jest wyłączona.
- CVE-2026-120208Wysokie
libheif w wersji 1.18.0 przed 1.23.3 zawiera podatność przepełnienia bufora opartego na stercie w funkcji unc_decoder_mixed_interleave::processTile(), która pozwala atakującym na zapis poza granicami bufora poprzez dostarczenie komponentów chrominancji o nierównych głębiach bitowych. Atakujący może spreparować plik HEIF deklarujący np. 16-bitowy Cb i 8-bitowy Cr, aby wywołać kontrolowane przez plik zapisy sterty poza płaszczyzną Cr, potencjalnie osiągając wykonanie kodu w potokach przetwarzania obrazów.
- CVE-2026-84451Średnie
libheif to dekoder i enkoder formatów HEIF oraz AVIF. W wersjach od 1.19.0 do 1.23.3 gałąź no-icef funkcji unc_decoder::get_compressed_image_data_uncompressed() zachowuje sprawdzenie zakresu oparte na dodawaniu, które może się przekręcić, gdy spreparowana siatka nieskompresowanych kafelków wygeneruje duże wartości range_start_offset i range_size. Przepełnienie powoduje, że porównanie granic przechodzi, a heif_image_handle_decode_image_tile() wywołuje memcpy() z nieprawidłowym wskaźnikiem źródłowym i bardzo dużą długością. Problem naprawiono w wersji 1.23.3.
- CVE-2026-84450Średnie
libheif to dekoder i enkoder formatów HEIF oraz AVIF. W wersjach od 1.19.0 do 1.23.3 spreparowany element obrazu zawierający właściwość clap oraz szerokość lub wysokość ispe większą niż INT32_MAX + 1 może doprowadzić do obliczeń przycinania przez heif_image_handle_get_image_tiling(). Funkcja Box_clap::left_rounded() lub Box_clap::top_rounded() przekazuje wymiar obrazu minus jeden do Fraction::Fraction(), którego konstruktor uint32_t używa asercji jako walidacji danych wejściowych, powodując przerwanie kompilacji z włączonymi asercjami. Wersje produkcyjne mogą obliczyć nieprawidłową geometrię przycinania, a API kafelkowania zwraca wymiary odrzucane przez normalne limity bezpieczeństwa dekodowania. Problem naprawiono w wersji 1.23.3.
- CVE-2026-84449Niskie
libheif, dekoder i enkoder formatów HEIF i AVIF, w wersjach przed 1.19.6 posiada przepełnienie licznika szerokości w funkcji Op_RGB24_32_to_YCbCr::convert_colorspace(), które może wystąpić dla bardzo dużych obrazów RGB. Powoduje to obliczenie nieprawidłowego wskaźnika wejściowego i odczyt poza zaalokowanym buforem podczas konwersji RGB do YCbCr, co może doprowadzić do awarii procesu kodowania.
- CVE-2026-84448Średnie
libheif to dekoder i enkoder formatów HEIF oraz AVIF. Przed wersją 1.23.2 publiczna funkcja heif_region_item_add_region_inline_mask_data() w libheif/api/libheif/heif_regions.cc przyjmuje mask_data_len bez weryfikacji, czy jest równa liczbie bajtów wymaganej przez width i height. Późniejsze wywołanie heif_region_get_mask_image() wylicza długość odczytu z geometrii regionu, więc zbyt mały bufor powoduje odczyt poza alokacją sterty i skopiowanie sąsiednich bajtów do zwróconego obrazu maski monochromatycznej. Może to ujawnić dane ze sterty lub zawiesić aplikację, która tworzy metadane regionu przez API zapisu; ścieżka parsowania plików nie jest podatna, ponieważ waliduje kanoniczny rozmiar maski. Problem naprawiono w wersji 1.23.2.
- CVE-2026-84447Wysokie
libheif to dekoder i koder formatów HEIF i AVIF. W wersji 1.23.1 i wcześniejszych spreparowane grafy referencji grid, iovl i iden mogą wielokrotnie dekodować ten sam obraz bazowy, ponieważ processed_ids jest kopiowane dla każdej gałęzi, a ImageItem::decode_image() nie ma wspólnego budżetu operacji. Podatność naprawiono w wersji 1.23.2.
- CVE-2026-84446Wysokie
libheif to dekoder i koder formatów HEIF i AVIF. Przed wersją 1.23.2 spreparowane dane czasowania sekwencji HEIF i listy edycji mogą sprawić, że Track::init_sample_timing_table() obliczy logiczną wartość m_num_output_samples przekraczającą liczniki uint32_t używane przez Track_Visual::decode_next_image_sample() i Track::get_next_sample_raw_data(). Powstałe porównanie nigdy nie osiąga zbyt dużej liczby wyjściowej, powodując nieskończone pętle dekodowania lub próbkowania surowego i omijając max_sequence_frames. Ta sama ścieżka sekwencji wielokrotnie wywołuje Box_stts::get_sample_duration() i alokuje Chunk::m_sample_ranges oraz Track::m_presentation_timeline poza rozliczaniem MemoryHandle, co pozwala na poważne wyczerpanie CPU i pamięci z małego pliku. Problem naprawiono w wersji 1.23.2.
Oryginalny opis (angielski, źródło NVD)
libheif is a HEIF and AVIF file format decoder and encoder. From 1.19.0 until 1.23.2, crafted HEIF or AVIF mime metadata and unci image data can cause decompress_brotli() and do_inflate() to grow accumulated output without an effective size limit or MemoryHandle accounting. The brotli path has no output bound, while the zlib path checks only a small temporary buffer in a branch that valid streams do not reach, and overlapping icef units can decompress the same payload repeatedly. HeifContext::interpret_heif_file_images() processes multiple compressed metadata items during file opening, allowing a small file to consume unbounded memory and terminate the process. This issue is fixed in version 1.23.2.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

