CVE-2026-100844
WysokieCVSS 8.4Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 49 - wyżej niż 49% wszystkich znanych CVE
Streszczenie
MONAI przed wersją 1.6.0 jest podatny na wstrzykiwanie poleceń systemu operacyjnego w komponencie nnUNetV2Runner. Wartości kontrolowane przez użytkownika z pliku konfiguracyjnego YAML (np. dataset_name_or_id) oraz z argumentów CLI/kwargs są łączone w ciąg poleceń bez cytowania i walidacji, a następnie przekazywane do subprocess z shell=True. Jeśli ofiara załaduje przetworzony złośliwy plik konfiguracyjny, dowolne polecenia są wykonywane z uprawnieniami użytkownika uruchamiającego zadanie.
Ocena ryzyka
Wykonanie dowolnych poleceń może prowadzić do pełnej kompromitacji systemu, kradzieży danych lub eskalacji uprawnień.
Rekomendacja
Zaktualizuj MONAI do wersji 1.6.0 lub nowszej. Nie ładuj plików konfiguracyjnych z niezaufanych źródeł.
Inne podatności w MONAI
Zobacz wszystkie- CVE-2026-119578Wysokie
MONAI od wersji 1.6.0 przed 1.6.1 zawiera podatność zdalnego wykonania kodu w funkcji Auto3DSeg algo_from_json(). Atakujący może uruchomić kod Python poprzez spreparowany plik algo_object.json w katalogu roboczym.
- CVE-2026-118684Średnie
MONAI przed wersją 1.6.1 zawiera lukę niewystarczającej weryfikacji integralności w funkcji check_hash(), która po cichu zwraca True, gdy hash_val ma wartość None, przy czym domyślnym typem skrótu jest MD5. Atakujący przeprowadzający atak man-in-the-middle lub kompromitujący rejestr mogą podmienić pakiety, zbiory danych lub archiwa modeli pobierane bez skrótów, umożliwiając dostarczenie złośliwych plików i potencjalne wykonanie kodu.
- CVE-2026-118683Wysokie
MONAI od wersji 1.2.0 przed 1.6.1 zawiera podatność na zdalne wykonanie kodu w ConfigWorkflow.__init__, która przekazuje plik configs/logging.conf pakietu do logging.config.fileConfig, gdzie pola klasy handlera i args są ewaluowane przez eval(). Atakujący może opublikować złośliwy pakiet, którego logging.conf uruchamia dowolny kod Python podczas konstruowania workflow, gdy ofiara załaduje lub uruchomi pakiet.
- CVE-2026-109361Wysokie
MONAI 1.2.0 przed 1.6.1 zawiera podatność na niebezpieczną deserializację w nnUNetV2Runner, która odpakowuje (unpickle) ścieżkę postprocessing_file odczytaną z inference_information.json bez ograniczenia jej do katalogu wyników. Atakujący, którzy mogą zmodyfikować inference_information.json, mogą wskazać złośliwy plik pickle w innym miejscu systemu plików, aby wykonać kod podczas uruchamiania predict_ensemble_postprocessing.
- CVE-2026-109360Wysokie
MONAI 0.4.0 przed 1.6.1 zawiera podatność na zdalne wykonanie kodu, która pozwala atakującym w ścieżce sieciowej na wykonanie kodu poprzez manipulację wagami SENet pobieranymi przez zwykły HTTP. Atakujący mogą podmienić spreparowany plik .pth, który load_state_dict_from_url odpakowuje bez weights_only=True, co prowadzi do wykonania kodu podczas konstruowania modeli SEResNet50 lub innych SENet z pretrained=True.
- CVE-2026-100846Wysokie
MONAI przed wersją 1.5.2 zawiera podatność deserializacji niezaufanych danych w funkcji algo_from_pickle w monai/auto3dseg/utils.py. Funkcja wczytuje plik .pkl i przekazuje jego zawartość do pickle.loads bez walidacji źródła lub zawartości. Jeśli aplikacja wywoła algo_from_pickle na pliku dostarczonym przez atakującego, obiekt definiujący __reduce__ zostanie wykonany podczas deserializacji, co prowadzi do wykonania dowolnego kodu.
- CVE-2026-100845Wysokie
MONAI przed wersją 1.6.0 zawiera podatność niebezpiecznej deserializacji w klasie NumpyReader, która bezwarunkowo używa numpy.load z allow_pickle=True podczas ładowania plików .npy i .npz. Atakujący mogą stworzyć złośliwe pliki .npy z ładunkiem pickle, który wykonuje dowolny kod podczas ładowania przez standardowy potok danych MONAI.
- CVE-2026-100843Wysokie
MONAI przed wersją 1.6.0 zawiera podatność zdalnego wykonania kodu w funkcji algo_from_pickle() z powodu niebezpiecznej deserializacji pickle.loads() w monai/auto3dseg/utils.py. Atakujący mogą stworzyć złośliwe pliki pickle, które wykonują dowolne polecenia systemowe podczas deserializacji przez podatną funkcję.
- CVE-2026-100842Wysokie
MONAI do wersji 1.6.0 zawiera podatność wstrzykiwania eval w funkcji _get_fake_spatial_shape() w monai/bundle/scripts.py. Funkcja waliduje wyrażenia kształtu za pomocą pomocnika, który przechodzi przez AST i zbiera tylko węzły ast.Name, odrzucając nazwy inne niż 'p' lub 'n', przed przekazaniem stringa do eval(). Wyrażenia zbudowane wyłącznie ze stałych i węzłów atrybutów, indeksów lub wywołań (np. "(1).__class__.__bases__[0].__subclasses__()") nie zawierają węzłów ast.Name i omijają listę dozwolonych. Ponieważ wartość kształtu pochodzi z metadanych pakietu, atakujący, który może wpłynąć na metadane pakietu, może uciec z piaskownicy eval i osiągnąć wykonanie kodu.
- CVE-2026-100841Wysokie
W MONAI 1.6.0, PersistentDataset jawnie odrzuca kombinację track_meta=True z weights_only=True, zmuszając użytkowników, którzy buforują MetaTensory, do uruchamiania torch.load(hashfile, weights_only=False). Pomocnicze funkcje cache w monai/data/utils.py również wywołują pickle.loads na buforowanej zawartości i używają hashlib.md5 do kluczy cache. W rezultacie lokalny użytkownik z dostępem do zapisu do współdzielonego katalogu cache może umieścić złośliwy plik pickle, który zostanie zdeserializowany przy następnym odczycie cache przez innego użytkownika, co prowadzi do wykonania dowolnego kodu w kontekście tego użytkownika.
Oryginalny opis (angielski, źródło NVD)
MONAI before 1.6.0 is vulnerable to OS command injection in the nnUNetV2Runner component (monai.apps.nnunet.nnunetv2_runner). User-controlled values taken from the YAML configuration file (notably dataset_name_or_id) and from CLI/kwargs arguments are concatenated into a command string without quoting or validation and then passed to subprocess with shell=True, so shell metacharacters (e.g., ';' on Linux, '&' on Windows) are interpreted. If a victim loads and processes a crafted configuration file — for example by instantiating nnUNetV2Runner with the malicious YAML and invoking a training/validation job such as train_single_model() — arbitrary commands are executed with the privileges of the user running the job.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

