CVE-2026-109360: MONAI: unsafe unpickle of SENet weights enables RCE
HIGHCISA: ATTENDMONAI versions 0.4.0 up to 1.6.1 download pretrained SENet weights over plaintext HTTP and load them with an unsafe pickle deserializer (CWE-502). An on-path attacker can swap in a crafted .pth file, and code runs as soon as a model such as SEResNet50 is built with pretrained=True. Exploitation needs a network position and a user or pipeline to trigger the load, so it is rated high (CVSS 7.5) rather than critical. There is no public exploit, no Nuclei template and no KEV listing, and EPSS data is not yet available. Still, 127 downstream dependents and a package with 16 other CVEs mean medical-imaging and research pipelines are exposed, and these often run on GPU hosts with broad data access. Upgrade MONAI to 1.6.1 or later, and until then avoid pretrained=True for SENet models or pre-stage verified weights from a trusted source.
What is the risk?
Medium-high. Impact is full confidentiality, integrity and availability loss on the host that loads the weights. Attack complexity is high because the attacker needs an on-path position (shared network, compromised proxy, hostile Wi-Fi or DNS hijack), and user interaction is required to build the model. There is no public exploit and no known active exploitation. Risk rises in environments that fetch weights at runtime from CI runners, notebooks, training clusters or containers with unrestricted outbound HTTP, especially those that hold patient data, credentials or cloud tokens.
How does the attack unfold?
What systems are affected?
How severe is it?
What is the attack surface?
What should I do?
1 step1) Upgrade MONAI to 1.6.1 or later. 2) Until patched, do not use pretrained=True for SENet models; download weights from a trusted HTTPS source, verify their checksums, and load them locally. 3) Block or monitor outbound plaintext HTTP from ML hosts and force egress through a TLS-inspecting proxy or an allowlist. 4) Prefer safetensors or torch.load with weights_only=True for any weight files. 5) Run training and notebook jobs in least-privilege, network-restricted containers with short-lived credentials. 6) Detect by searching code and CI logs for pretrained SENet construction and for HTTP requests to weight hosts, and by alerting on unexpected child processes spawned from Python training jobs. 7) Cache verified weights in an internal artifact store.
What does CISA's SSVC say?
Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-109360?
MONAI versions 0.4.0 up to 1.6.1 download pretrained SENet weights over plaintext HTTP and load them with an unsafe pickle deserializer (CWE-502). An on-path attacker can swap in a crafted .pth file, and code runs as soon as a model such as SEResNet50 is built with pretrained=True. Exploitation needs a network position and a user or pipeline to trigger the load, so it is rated high (CVSS 7.5) rather than critical. There is no public exploit, no Nuclei template and no KEV listing, and EPSS data is not yet available. Still, 127 downstream dependents and a package with 16 other CVEs mean medical-imaging and research pipelines are exposed, and these often run on GPU hosts with broad data access. Upgrade MONAI to 1.6.1 or later, and until then avoid pretrained=True for SENet models or pre-stage verified weights from a trusted source.
Is CVE-2026-109360 actively exploited?
No confirmed active exploitation of CVE-2026-109360 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-109360?
1) Upgrade MONAI to 1.6.1 or later. 2) Until patched, do not use pretrained=True for SENet models; download weights from a trusted HTTPS source, verify their checksums, and load them locally. 3) Block or monitor outbound plaintext HTTP from ML hosts and force egress through a TLS-inspecting proxy or an allowlist. 4) Prefer safetensors or torch.load with weights_only=True for any weight files. 5) Run training and notebook jobs in least-privilege, network-restricted containers with short-lived credentials. 6) Detect by searching code and CI logs for pretrained SENet construction and for HTTP requests to weight hosts, and by alerting on unexpected child processes spawned from Python training jobs. 7) Cache verified weights in an internal artifact store.
What systems are affected by CVE-2026-109360?
This vulnerability affects the following AI/ML architecture patterns: training pipelines, model development notebooks, medical imaging ML pipelines, CI/CD for ML, model fine-tuning workflows.
What is the CVSS score for CVE-2026-109360?
CVE-2026-109360 has a CVSS v3.1 base score of 7.5 (HIGH). The EPSS exploitation probability is 0.56%.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0010.001AI SoftwareAML.T0010.003ModelAML.T0011.000Unsafe AI ArtifactsAML.T0018.002Embed MalwareCompliance Controls Affected
What are the technical details?
Original Advisory
MONAI 0.4.0 before 1.6.1 contains a remote code execution vulnerability that allows on-path attackers to execute code by tampering with SENet pretrained weights fetched over plaintext HTTP. Attackers can substitute a crafted .pth file that load_state_dict_from_url unpickles without weights_only=True, executing code when SEResNet50 or other SENet models are constructed with pretrained=True.
Exploitation Scenario
An attacker on the same network segment as a research GPU server, or controlling a compromised proxy or DNS, waits for a MONAI job to request the SENet pretrained weights over HTTP. They answer with a malicious .pth file containing a pickle payload. When the data scientist's script builds SEResNet50 with pretrained=True, load_state_dict_from_url unpickles the file and runs the payload. This yields a reverse shell, theft of cloud credentials and patient datasets, and a foothold for tampering with trained models.
Weaknesses (CWE)
CWE-502 — Deserialization of Untrusted Data: The product deserializes untrusted data without sufficiently ensuring that the resulting data will be valid.
- [Architecture and Design, Implementation] If available, use the signing/sealing features of the programming language to assure that deserialized data has not been tainted. For example, a hash-based message authentication code (HMAC) could be used to ensure that data has not been modified.
- [Implementation] When deserializing data, populate a new object rather than just deserializing. The result is that the data flows through safe input validation and that the functions are safe.
Source: MITRE CWE corpus.
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:HReferences
Timeline
Related Vulnerabilities
CVE-2026-487059.3MONAI: NaN/inf DICOM input causes DoS and corrupt inference
Same package: monaiCVE-2025-587558.8MONAI: path traversal allows arbitrary file write
Same package: monaiCVE-2025-587568.8MONAI: unsafe deserialization in CheckpointLoader allows RCE
Same package: monaiCVE-2025-587578.8MONAI: unsafe pickle deserialization RCE in data pipeline
Same package: monaiCVE-2026-1008428.8MONAI: eval sandbox bypass allows code execution
Same package: monai