Podatności libheif
31 znanych podatności CVE w libheif, przetłumaczonych i ocenionych.
- 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-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.
- CVE-2026-84444Wysokie
libheif to dekoder i koder formatów HEIF i AVIF. Przed wersją 1.23.2, gdy włączony jest WITH_UNCOMPRESSED_CODEC, heif_context_add_image_tile() akceptuje niezależnie skonstruowany kafelek, którego wymiary płaszczyzny komponentów nie pasują do geometrii kafelka ustalonej przez obraz prototypowy. ImageItem_uncompressed::add_image_tile() przekazuje ten kafelek bezpośrednio do unc_encoder::encode_tile(), który nie miał bramki check_component_sizes() i ustala rozmiar wyjścia na podstawie skonfigurowanej geometrii kafelka, kopiując rzeczywiste wymiary płaszczyzny komponentów kafelka. Zbyt duża płaszczyzna komponentów może zatem sprawić, że unc_encoder_component_interleave::encode_tile() skopiuje dane kontrolowane przez atakującego poza bufor wyjściowy na stercie. Problem naprawiono w wersji 1.23.2.
- CVE-2026-84384Wysokie
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.
- CVE-2026-62377Średnie
Podatność w libheif (wersje do 1.23.0) pozwala na crash aplikacji przez specjalnie spreparowaną sekwencję HEIF, która nie rejestruje ścieżek śledzenia, co prowadzi do asercji lub niezdefiniowanego zachowania przy wywołaniu heif_context_get_track.
- CVE-2026-62292Wysokie
Podatność w bibliotece libheif (wersje 1.19.0 do 1.23.1) powodująca awarię aplikacji podczas dekodowania specjalnie spreparowanego obrazu HEIF z kompresją zlib. Błąd w obliczaniu offsetu prowadzi do odczytu poza zakresem i crasha.
- CVE-2026-62291Średnie
Podatność w libheif (wersje do 1.23.0) pozwala na uszkodzenie pamięci (heap corruption) przez spreparowaną sekwencję obrazów z niezgodnymi wymiarami płaszczyzn alfa, co prowadzi do zapisu poza zakresem podczas kodowania.
- CVE-2026-62289Średnie
Podatność w libheif (wersje do 1.23.0) pozwala na crash lub uszkodzenie wyników tiling przez spreparowany plik HEIF/AVIF z polem clean aperture, które redukuje wymiary do zera, powodując niedomiar i asercję lub błędne wyniki.
- CVE-2026-50142Wysokie
libheif w wersjach od 1.19.0 do 1.23.0 zawiera podatność na niekontrolowaną alokację pamięci w przypadku specjalnie spreparowanego pliku HEIF z sekwencją msf1. W Box_stsz::parse() limit max_sequence_frames jest stosowany tylko do próbek o zmiennym rozmiarze, a w Track::load() arytmetyka 32-bitowa może prowadzić do obejścia kontroli spójności. Może to spowodować alokację gigabajtów pamięci, co prowadzi do awarii lub zawieszenia procesu.
- CVE-2026-48029Wysokie
Biblioteka libheif w wersjach od 1.19.0 do 1.21.2 zawiera podatność polegającą na odczycie poza zakresem sterty (heap OOB read) w funkcji ImageItem_Grid::decode_grid_tile, spowodowaną niedomiarem współrzędnych kafelka wywołanym przez irot. Wersja 1.22.0 zawiera poprawkę.
- CVE-2026-47709Średnie
Podatność w bibliotece libheif przed wersją 1.22.0. Podczas dekodowania złośliwego pliku HEIF bez właściwości `ispe` (ale z `uncC`) dochodzi do crasha w funkcji `heif_image_handle_get_image_tiling()` – w debug buildzie przez asercję, w release/ASan przez odczyt null pointera.
- CVE-2026-47254Średnie
Podatność w libheif przed wersją 1.22.0 powoduje przepełnienie bufora sterty podczas odczytu plików HEIF/AVIF. Funkcja Track::init_sample_timing_table() zapisuje nieprawidłowy indeks fragmentu, co prowadzi do odczytu poza zakresem.
- CVE-2026-47251Średnie
Podatność w libheif przed wersją 1.22.0. Łatka dla CVE-2026-3949 wprowadziła przepełnienie liczb całkowitych w sprawdzeniu bezpieczeństwa, co pozwala na ominięcie zabezpieczenia i wywołanie odczytu poza stertą (out-of-bounds heap read) przez spreparowany plik HEIF z ścieżką VVC.
- CVE-2026-47247Wysokie
Dwa błędy w bibliotece libheif przed wersją 1.22.0 umożliwiają wyciek pamięci sterty jako widoczne wartości pikseli w zdekodowanych obrazach siatki. Atakujący przesyłający spreparowany plik AVIF/HEIC do serwerowego procesora obrazów (WordPress, Sharp/libvips, ImageMagick itp.) może odzyskać dane sterty, w tym wskaźniki funkcji bibliotecznych wystarczające do pokonania ASLR, z publicznie dostępnego wyjścia JPEG/PNG/WebP.
- CVE-2026-47178Średnie
Podatność w libheif w wersjach 1.19.0 do 1.21.2 pozwala na zapis poza zakresem sterty w dekoderze nieskompresowanych kafelków. Złośliwy plik HEIF może nadpisać wskaźnik vtable, co prowadzi do wykonania kodu.
- CVE-2026-47714Średnie
W bibliotece libheif w wersjach do 1.21.2 występuje przepełnienie liczb całkowitych podczas przetwarzania maski inline w plikach HEIF. Iloczyn szerokości i wysokości może przekroczyć maksymalną wartość dla 32-bitowej liczby bez znaku, co prowadzi do alokacji zbyt małego bufora i odczytu poza jego granicami. Problem został naprawiony w wersji 1.22.0.
- CVE-2026-41071Wysokie
W libheif przed 1.22.0, specjalnie spreparowany plik HEIF z deklaracją większej liczby próbek niż faktycznie istnieje powoduje odczyt poza zakresem w konstruktorze SampleAuxInfoReader. Podatność jest wyzwalana podczas parsowania pliku.
- CVE-2026-41069Średnie
W bibliotece libheif w wersjach 1.21.2 i wcześniejszych wykryto podatność na odczyt poza zakresem podczas parsowania sekwencji HEIF. Specjalnie spreparowany plik może spowodować odmowę usługi (DoS).
- CVE-2026-32882Wysokie
W bibliotece libheif w wersjach do 1.21.2 włącznie występuje przepełnienie bufora sterty w funkcji HeifPixelImage::overlay(). Podczas składania obrazu nakładki (iovl), którego obraz potomny ma różną głębię bitową dla kanału alfa i kanałów kolorów, funkcja indeksuje płaszczyznę alfa przy użyciu kroku kanału kolorów zamiast kroku alfa, co powoduje odczyty poza końcem bufora alfa.
- CVE-2026-32814Średnie
W libheif przed wersją 1.22.0, podczas dekodowania obrazu HEIF w siatce z strict_decoding=false, uszkodzony kafelek cicho zawodzi, a biblioteka zwraca heif_error_Ok bez wskazania błędu, prowadząc do wycieku niezainicjalizowanej pamięci sterty. Pamięć dla Y, Cb i Cr nie jest zerowana, więc dane z sterty trafiają do pikseli.
- CVE-2026-32741Wysokie
libheif w wersjach 1.21.2 i niższych zawiera przepełnienie bufora sterty w funkcji MaskImageCodec::decode_mask_image(). Podczas dekodowania pliku HEIF z obrazem maski, długość kopiowanych danych jest kontrolowana przez atakującego i może przekroczyć rozmiar bufora docelowego.
- CVE-2026-32740Wysokie
libheif to biblioteka do dekodowania i kodowania formatów HEIF i AVIF. Wersje 1.21.2 i starsze zawierają podatność na zapis poza dozwolonym obszarem pamięci sterty podczas składania kafelków siatki. Atakujący może dostarczyć plik HEIF/AVIF z siatką 1×4 kafelków o nieparzystej wysokości, co powoduje zapis 64 bajtów danych sterowanych przez atakującego poza przydzieloną pamięć.
- CVE-2026-32739Średnie
Biblioteka libheif w wersjach 1.21.2 i niższych zawiera podatność na atak DoS (Denial of Service) poprzez nieskończoną pętlę w funkcji Box_stts::get_sample_duration(). Specjalnie spreparowany plik HEIF o rozmiarze 800 bajtów powoduje 100% użycie CPU bez postępu, co prowadzi do odmowy usługi. Problem występuje podczas otwierania pliku, przed jakąkolwiek interakcją użytkownika.
- CVE-2026-32738Średnie
W libheif (wersje 1.21.2 i starsze) spreparowany plik HEIF z samples_per_chunk=0 w boxie stsc powoduje niedomiar liczby całkowitej bez znaku w konstruktorze Chunk, co prowadzi do odczytu poza zakresem i awarii (SEGV) przy pierwszym dostępie do ramki. Plik parsuje się bez błędu, ale crash następuje przy próbie wyświetlenia.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

