CVE-2025-9905
WysokieCVSS 7.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 12 - wyżej niż 12% wszystkich znanych CVE
Streszczenie
Metoda Keras Model.load_model może zostać wykorzystana do wykonania dowolnego kodu, nawet przy ustawieniu safe_mode=True. Poprzez spreparowany archiwum modelu .h5/.hdf5 wykorzystujące warstwę Lambda z kodem pickle możliwe jest uruchomienie dowolnego kodu Pythona, ponieważ opcja safe_mode=True nie jest respektowana przy odczycie archiwów .h5.
Ocena ryzyka
Wczytanie złośliwego modelu może doprowadzić do wykonania dowolnego kodu w kontekście aplikacji ładującej model, co grozi kompromitacją systemu. Ryzyko dotyczy szczególnie środowisk wczytujących niezaufane modele ML.
Rekomendacja
Nie wczytuj modeli .h5/.hdf5 z niezaufanych źródeł oraz preferuj nowszy format .keras. Zaktualizuj Keras do wersji zawierającej poprawkę i weryfikuj integralność modeli przed wczytaniem.
Inne podatności w Keras
Zobacz wszystkie- CVE-2026-12481Krytyczne
W bibliotece Keras w wersji 3.14.0 wykryto podatność umożliwiającą zdalne wykonanie kodu. Problem wynika z nieprawidłowej obsługi deserializacji w warstwie `Lambda`, gdzie funkcja `_raise_for_lambda_deserialization()` nie egzekwuje trybu bezpiecznego, gdy `safe_mode` ma wartość `None` (domyślną). Powoduje to pominięcie zabezpieczeń i umożliwia deserializację złośliwego kodu bajtowego `marshal`.
- CVE-2026-12570Średnie
Podatność w keras-team/keras w wersjach do 3.15.0 umożliwia atak typu Denial of Service (DoS) podczas ładowania złośliwych plików modeli .keras przez funkcję keras.models.load_model(). Metoda H5IOStore.__getitem__ w keras/src/saving/saving_lib.py nie waliduje kształtu ani rozmiaru zbiorów danych, co prowadzi do nieograniczonego przydziału pamięci. Specjalnie spreparowany plik .keras może wywołać warunek braku pamięci (OOM), powodując zakończenie procesu (kod wyjścia 137). Problem omija poprawkę dla CVE-2026-0897, która dotyczyła podobnej luki w KerasFileEditor. Wektor ataku obejmuje zatrute modele z publicznych repozytoriów lub złośliwych rejestrów modeli, co stanowi zagrożenie dla potoków uczenia maszynowego przetwarzających niezaufane modele.
- CVE-2026-9335Średnie
Podatność w keras-team/keras w wersjach do 3.14.0 włącznie umożliwia ujawnienie zawartości dowolnych lokalnych plików HDF5 z powodu nieprawidłowego obsługiwania ExternalLinks. Funkcje `KerasFileEditor` i `keras.saving.load_weights` omijają pomocnicze funkcje `safe_get_h5_group` i `safe_get_h5_dataset`, które są zaprojektowane do odrzucania ExternalLinks i SoftLinks. Powoduje to automatyczne dereferencjonowanie linków do zewnętrznych plików HDF5, umożliwiając atakującym ujawnienie wrażliwych danych z lokalnego systemu plików ofiary.
- CVE-2026-12484Wysokie
Keras w wersji 3.15.0 zawiera podatność na niebezpieczną deserializację danych PyTorch pickle poprzez publiczną metodę `keras.layers.TorchModuleWrapper.from_config`. Metoda ta wywołuje `torch.load(..., weights_only=False)` bez wymagania jawnej zgody na niebezpieczne działanie. Poza kontekstem `SafeModeScope(True)` domyślnie dozwolona jest niebezpieczna deserializacja, co może prowadzić do wykonania dowolnego kodu.
- CVE-2026-12482Średnie
W bibliotece Keras w wersji 3.12.0 wykryto podatność polegającą na tym, że walidacja `filter_safe_tarinfos` w pliku `keras/src/utils/file_utils.py` nie sprawdza dowiązań symbolicznych (symlink) pod kątem próby opuszczenia docelowego katalogu. Atakujący może dostarczyć złośliwe archiwum tar, które ominie tę kontrolę i utworzy dowiązania symboliczne poza dozwolonym katalogiem.
- CVE-2026-12480Średnie
Podatność w bibliotece Keras (do wersji 3.13.2 włącznie) umożliwia odczyt dowolnego pliku HDF5 z systemu ofiary. Wynika to z niepełnej poprawki dla CVE-2026-1669 i braku weryfikacji właściwości `dataset.is_virtual` w metodach `H5IOStore._verify_dataset()` oraz `file_editor.py`. Atakujący może dostarczyć złośliwy plik modelu `.keras` lub wag `.h5` zawierający wirtualny zestaw danych (VDS) odnoszący się do zewnętrznych plików HDF5.
- CVE-2026-11816Wysokie
Podatność w Keras przed wersją 3.14.0 umożliwia przejście poza katalog docelowy podczas rozpakowywania archiwów. Funkcje walidujące ścieżki plików w archiwach odnoszą się do bieżącego katalogu roboczego (CWD) zamiast do rzeczywistego katalogu docelowego, co w środowiskach takich jak Docker, CI/CD czy Jupyter (gdzie CWD to '/') pozwala na ominięcie zabezpieczeń i zapis plików poza zamierzonym katalogiem.
- CVE-2026-1462Wysokie
W bibliotece `keras` w wersji 3.13.0 wykryto podatność w klasie `TFSMLayer`. Pozwala ona na ładowanie kontrolowanych przez atakującego modeli TensorFlow SavedModel podczas deserializacji plików `.keras`, nawet gdy włączony jest tryb bezpieczny (`safe_mode=True`). Problem wynika z bezwarunkowego ładowania zewnętrznych SavedModel, serializacji ścieżek plików kontrolowanych przez atakującego oraz braku walidacji w metodzie `from_config()`.
- CVE-2026-1669Wysokie
Podatność w mechanizmie ładowania modeli Keras (integracja HDF5) umożliwia zdalnemu atakującemu odczyt dowolnych plików lokalnych poprzez spreparowany plik modelu .keras wykorzystujący zewnętrzne odniesienia do zbiorów danych HDF5. Luka dotyczy wersji Keras od 3.0.0 do 3.13.1 na wszystkich obsługiwanych platformach.
- CVE-2026-0897Wysokie
Podatność w komponencie wczytywania wag HDF5 w Google Keras 3.0.0 do 3.13.0 umożliwia zdalnemu atakującemu wywołanie odmowy usługi (DoS) poprzez wyczerpanie pamięci i awarię interpretera Pythona. Atak polega na dostarczeniu spreparowanego archiwum .keras zawierającego plik model.weights.h5 z deklaracją bardzo dużego kształtu zbioru danych.
Oryginalny opis (angielski, źródło NVD)
The Keras Model.load_model method can be exploited to achieve arbitrary code execution, even with safe_mode=True. One can create a specially crafted .h5/.hdf5 model archive that, when loaded via Model.load_model, will trigger arbitrary code to be executed. This is achieved by crafting a special .h5 archive file that uses the Lambda layer feature of keras which allows arbitrary Python code in the form of pickled code. The vulnerability comes from the fact that the safe_mode=True option is not honored when reading .h5 archives. Note that the .h5/.hdf5 format is a legacy format supported by Keras 3 for backwards compatibility.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

