CVE-2026-32741
WysokieCVSS 7.1Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 27 - wyżej niż 27% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Zdalny atakujący może dostarczyć spreparowany plik HEIF, powodując awarię aplikacji lub potencjalnie wykonanie dowolnego kodu.
Rekomendacja
Zaktualizuj libheif do wersji 1.22.0 lub nowszej.
Inne podatności w libheif
Zobacz wszystkie- 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.
Oryginalny opis (angielski, źródło NVD)
libheif is a HEIF and AVIF file format decoder and encoder. Versions 1.21.2 and below contain a heap buffer overflow in MaskImageCodec::decode_mask_image(). When decoding a HEIF file containing a mask image (mski), the function copies the full iloc extent data into a pixel buffer using memcpy(dst, data.data(), data.size()). The copy length data.size() is determined by the iloc extent in the file (attacker-controlled), while the destination buffer is sized based on the declared image dimensions. Because no upper-bound check exists on the data length, a crafted file whose iloc extent exceeds the pixel buffer allocation overflows the heap. The vulnerable single-memcpy branch is reached when the mskC property specifies bits_per_pixel = 8 and the ispe property declares an even width ≥ 64 (so that stride == width), with no changes to default security limits or external codec plugins required. This issue has been fixed in version 1.22.0.

