CVE-2026-120754
NiskieCVSS 3.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 4 - wyżej niż 4% wszystkich znanych CVE
Streszczenie
HDF5 do wersji 2.2.0 zawiera podatność odczytu niezainicjalizowanej pamięci w funkcji H5Z__filter_scaleoffset() w pliku src/H5Zscaleoffset.c. Ścieżka dekodowania waliduje odczyty względem rozmiaru bufora chunka, a nie liczby bajtów faktycznie odczytanych z pliku, przez co obcięty chunk przechodzi kontrole granic i jest dekompresowany z niezainicjalizowanej części alokacji, ujawniając niepowiązane dane heap jako dane zbioru danych. Problem nie jest wykrywany przez AddressSanitizer, ponieważ odczyty pozostają w granicach alokacji, i wynika z niekompletnej poprawki dla CVE-2026-19029.
Ocena ryzyka
Odczyt spreparowanego pliku HDF5 może ujawnić fragmenty pamięci procesu (dane innych zbiorów lub struktur) w zwracanych danych. Ryzyko dotyczy aplikacji przetwarzających niezaufane pliki HDF5 i może prowadzić do wycieku informacji.
Rekomendacja
Zaktualizuj HDF5 do wersji zawierającej pełną poprawkę dla CVE-2026-19029 i ogranicz przetwarzanie niezaufanych plików. Rozważ walidację integralności plików HDF5 przed ich odczytem.
Inne podatności w HDF5
Zobacz wszystkie- CVE-2017-17509Wysokie
W HDF5 w wersji 1.10.1 występuje podatność na zapis poza granicami w funkcji H5G__ent_decode_vec w pliku H5Gcache.c w bibliotece libhdf5.a. Na przykład, użycie narzędzia h5dump może spowodować awarię lub inne nieokreślone skutki, gdy otworzy się spreparowany plik hdf5.
- CVE-2016-4333Wysokie
Biblioteka HDF5 w wersji 1.8.16 ma lukę, która pozwala na modyfikację wskaźnika pętli inicjalizującej tablicę, co może prowadzić do wskazywania poza granice tablicy. Wartość używana do alokacji przestrzeni pochodzi z pliku, co stwarza ryzyko manipulacji przez atakującego.
- CVE-2016-4332Wysokie
Biblioteka HDF5 w wersji 1.8.16 nie sprawdza, czy określone typy wiadomości obsługują dany znacznik, co prowadzi do rzutowania struktury na alternatywną strukturę i przypisywania wartości do pól, które nie są obsługiwane przez typ wiadomości. Może to skutkować wykonaniem kodu w kontekście biblioteki.
- CVE-2016-4331Wysokie
Podczas dekodowania danych z zestawu danych zakodowanego przy użyciu dekodowania H5Z_NBIT, biblioteka HDF5 w wersji 1.8.16 nie zapewnia, że precyzja mieści się w granicach rozmiaru, co prowadzi do możliwości wykonania dowolnego kodu.
- CVE-2016-4330Wysokie
W bibliotece HDF5 w wersji 1.8.16 występuje błąd polegający na braku sprawdzenia, czy liczba wymiarów tablicy odczytanej z pliku mieści się w granicach przydzielonej dla niej przestrzeni. Może to prowadzić do przepełnienia bufora na stercie, co potencjalnie umożliwia wykonanie dowolnego kodu.
- CVE-2026-120758Średnie
HDF5 do wersji 2.2.0 zawiera podatność dereferencji wskaźnika NULL w H5HL_unprotect() w src/H5HL.c. Spreparowany plik HDF5 może doprowadzić do wywołania H5HL_unprotect() bez obiektu w pamięci podręcznej do odpięcia, a funkcja przekazuje wskaźnik NULL do H5AC_unpin_entry(), co powoduje awarię asercji w kompilacjach debug i dereferencję wskaźnika NULL oraz awarię w kompilacjach release. Atakujący, który nakłoni użytkownika lub aplikację do otwarcia i przejścia złośliwego pliku, może spowodować odmowę usługi.
- CVE-2026-120757Wysokie
HDF5 do wersji 2.2.0 zawiera podatność przepełnienia bufora sterty podczas odczytu w H5L__extern_traverse() w src/H5Lexternal.c, domyślnym wywołaniu zwrotnym przechodzenia dla linków zewnętrznych. Wywołanie zwrotne lokalizuje nazwę pliku docelowego i ścieżkę obiektu w danych użytkownika linku za pomocą strlen() bez walidacji bufora względem jego rozmiaru (udata_size, oznaczony jako nieużywany). Spreparowany plik HDF5 zawierający link zewnętrzny, którego dane nie są zakończone znakiem NULL lub są zbyt krótkie, aby pomieścić oba ciągi, powoduje odczyt poza końcem bufora sterty udata, a wskaźnik ścieżki obiektu może również wskazywać poza bufor. Przepełnienie jest nieograniczone i trwa do napotkania bajtu zerowego. Podatność jest wyzwalana podczas przechodzenia złośliwego linku, na przykład podczas otwierania obiektu przez niego. Atakujący, który nakłoni użytkownika lub aplikację do dostępu do spreparowanego pliku, może spowodować odmowę usługi, a sąsiednie zawartości sterty mogą zostać włączone do nazwy pliku zewnętrznego lub ścieżki obiektu, którą biblioteka próbuje otworzyć.
- CVE-2026-120756Średnie
HDF5 do wersji 2.2.0 zawiera podatność heap buffer over-read w funkcji H5O__chunk_deserialize() w pliku src/H5Ocache.c. Podczas dekodowania komunikatów nagłówka obiektu rozmiar komunikatu jest sprawdzany względem końca obrazu chunka, zanim zostanie zdekodowana reszta nagłówka komunikatu, przez co spreparowany plik HDF5 może spowodować odczyt poza alokacją heap podczas H5Fopen(). Atakujący, który nakłoni użytkownika lub aplikację do otwarcia złośliwego pliku, może wywołać odmowę usługi lub ograniczone ujawnienie pamięci procesu.
- CVE-2026-120755Średnie
Biblioteka HDF5 do wersji 2.2.0 zawiera podatność out-of-bounds read w funkcji H5Z__filter_szip() w pliku src/H5Zszip.c. Podczas dekodowania fragmentu skompresowanego szipem funkcja odejmuje 4-bajtowy nagłówek długości od długości fragmentu bez sprawdzenia, czy fragment ma co najmniej 4 bajty, co przy skróconym lub uszkodzonym fragmencie powoduje zawinięcie obliczeń i odczyt poza bufor. Atakujący może wywołać odmowę usługi, jeśli użytkownik lub aplikacja odczyta zbiór danych ze spreparowanego pliku HDF5; dotyczy to tylko kompilacji z obsługą szip.
- CVE-2026-120689Średnie
HDF5 do wersji 2.2.0 zawiera podatność niekontrolowanej rekurencji w funkcji H5B__iterate_helper() w pliku src/H5B.c. Podczas iteracji drzewa B w wersji 1 funkcja nie sprawdza, czy poziom węzła potomnego odpowiada oczekiwanemu poziomowi, co pozwala na obejście sprawdzenia i spowodowanie nieograniczonej rekurencji, prowadzącej do wyczerpania stosu i awarii. Atakujący może wywołać to poprzez otwarcie spreparowanego pliku HDF5 i wywołanie H5Gget_info() lub H5Gget_num_objs() na grupie.
Oryginalny opis (angielski, źródło NVD)
HDF5 through 2.2.0 contains an uninitialized memory read vulnerability in H5Z__filter_scaleoffset() in src/H5Zscaleoffset.c. The decode path validates reads against the allocated size of the chunk buffer rather than the number of bytes actually read from the file. Because H5D__chunk_lock() deliberately sizes filtered chunk buffers to the larger of the stored and unfiltered chunk sizes and fills only the stored bytes, a truncated chunk passes these bounds checks and is decompressed from the uninitialized remainder of the allocation. Unrelated heap contents are then returned to the caller as dataset data. Because the reads remain within the allocation, the issue is not detected by AddressSanitizer. An attacker who can get a user or application to read a dataset from a crafted HDF5 file can cause disclosure of process memory. This issue exists because of an incomplete fix for CVE-2026-19029.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

