CVE-2026-118627: MLflow: SHAP explainer deserialization allows RCE
AWAITING NVDMLflow has a deserialization-of-untrusted-data flaw (CWE-502) in how it loads SHAP explainer models, so a crafted explainer file or page can run arbitrary code as the user who opens it. No CVSS score, EPSS value, KEV listing, public exploit or Nuclei template exists yet, so exploitation likelihood is unquantified. The blast radius is still large: MLflow has 695 downstream dependents and 95 other CVEs, and its package risk score is 81/100 with an OpenSSF Scorecard of 5.4/10. The advisory (ZDI-26-843) lists no patched version, so check the MLflow release notes and ZDI advisory for a fix before relying on any upgrade. Until then, load only explainers from trusted, integrity-verified sources, and keep MLflow tracking servers and notebooks on hosts with no production credentials.
What is the risk?
Severity is unscored (no CVSS), so treat it as high until scoring is published, because CWE-502 deserialization flaws that yield RCE are typically high impact. The advisory says user interaction is required (opening a malicious file or visiting a malicious page), which reduces mass-exploitation potential but fits phishing and model-sharing scenarios. There is no public exploit, no EPSS data and no KEV listing at publication, and ZDI-coordinated disclosures often precede exploit details. Exposure is highest where data scientists load third-party or shared SHAP explainers, or where MLflow runs with broad cloud and data credentials. Confidence in these conclusions is MEDIUM, as they rest on a single ZDI advisory with no affected-version data.
How does the attack unfold?
What systems are affected?
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| MLflow | pip | — | No patch |
Do you use MLflow? You're affected.
How severe is it?
What should I do?
1 step1) Check the MLflow release notes and the ZDI-26-843 advisory for a fixed version, and upgrade as soon as one is available (affected and patched ranges are currently unknown). 2) Do not load SHAP explainers or other pickled or serialized artifacts from untrusted sources, and require provenance and hash verification for shared artifacts. 3) Restrict write access to MLflow artifact stores and model registries so attackers cannot plant malicious explainers. 4) Run notebooks and MLflow clients under least-privilege accounts, in sandboxed or containerized environments, with short-lived credentials. 5) Detect by monitoring for unexpected child processes, outbound connections or shell spawns from Python processes that call mlflow.shap.load_explainer, and audit registries for recently modified explainer artifacts. 6) Train staff not to open unsolicited model files or links.
How is it classified?
Which compliance frameworks are affected?
This CVE is relevant to:
Frequently Asked Questions
What is CVE-2026-118627?
MLflow has a deserialization-of-untrusted-data flaw (CWE-502) in how it loads SHAP explainer models, so a crafted explainer file or page can run arbitrary code as the user who opens it. No CVSS score, EPSS value, KEV listing, public exploit or Nuclei template exists yet, so exploitation likelihood is unquantified. The blast radius is still large: MLflow has 695 downstream dependents and 95 other CVEs, and its package risk score is 81/100 with an OpenSSF Scorecard of 5.4/10. The advisory (ZDI-26-843) lists no patched version, so check the MLflow release notes and ZDI advisory for a fix before relying on any upgrade. Until then, load only explainers from trusted, integrity-verified sources, and keep MLflow tracking servers and notebooks on hosts with no production credentials.
Is CVE-2026-118627 actively exploited?
No confirmed active exploitation of CVE-2026-118627 has been reported, but organizations should still patch proactively.
How to fix CVE-2026-118627?
1) Check the MLflow release notes and the ZDI-26-843 advisory for a fixed version, and upgrade as soon as one is available (affected and patched ranges are currently unknown). 2) Do not load SHAP explainers or other pickled or serialized artifacts from untrusted sources, and require provenance and hash verification for shared artifacts. 3) Restrict write access to MLflow artifact stores and model registries so attackers cannot plant malicious explainers. 4) Run notebooks and MLflow clients under least-privilege accounts, in sandboxed or containerized environments, with short-lived credentials. 5) Detect by monitoring for unexpected child processes, outbound connections or shell spawns from Python processes that call mlflow.shap.load_explainer, and audit registries for recently modified explainer artifacts. 6) Train staff not to open unsolicited model files or links.
What systems are affected by CVE-2026-118627?
This vulnerability affects the following AI/ML architecture patterns: MLOps platforms, Model registries, Training pipelines, Model explainability workflows, Jupyter/notebook environments.
What is the CVSS score for CVE-2026-118627?
No CVSS score has been assigned yet.
What is the AI security impact?
Affected AI Architectures
MITRE ATLAS Techniques
AML.T0010.003ModelAML.T0011.000Unsafe AI ArtifactsAML.T0018.002Embed MalwareAML.T0050Command and Scripting InterpreterCompliance Controls Affected
What are the technical details?
Original Advisory
MLflow SHAP load_explainer Deserialization of Untrusted Data Remote Code Execution Vulnerability. This vulnerability allows remote attackers to execute arbitrary code on affected installations of MLflow. User interaction is required to exploit this vulnerability in that the target must visit a malicious page or open a malicious file. The specific flaw exists within the loading of SHAP explainer models. The issue results from the lack of proper validation of user-supplied data, which can result in deserialization of untrusted data. An attacker can leverage this vulnerability to execute code in the context of the current user. Was ZDI-CAN-30301.
Exploitation Scenario
An attacker builds a SHAP explainer artifact containing a malicious serialized payload and shares it through a public model hub, a shared artifact store or a phishing message framed as a model-interpretability report. A data scientist or an automated pipeline loads it with MLflow's SHAP load_explainer function. Deserialization executes the payload with the user's privileges, giving the attacker a shell. The attacker then harvests cloud and registry credentials, exfiltrates datasets and models, and can modify registered models to poison downstream deployments.
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.
References
- zerodayinitiative.com/advisories/ZDI-26-843/x_research-advisory
Timeline
Related Vulnerabilities
CVE-2025-1537910.0MLflow: RCE via unsanitized model dependency specs
Same package: mlflowCVE-2023-376510.0MLflow: path traversal allows arbitrary file read
Same package: mlflowCVE-2023-27809.8MLflow: path traversal allows arbitrary file read/write
Same package: mlflowCVE-2023-11779.8MLflow: path traversal allows arbitrary file read/write
Same package: mlflowCVE-2026-26359.8mlflow: security flaw enables exploitation
Same package: mlflow