CVE-2022-23590: TensorFlow: DoS via malicious SavedModel GraphDef

HIGH PoC AVAILABLE CISA: TRACK*
Published February 4, 2022
CISO Take

Any TensorFlow deployment that loads externally-sourced or user-supplied SavedModel files is vulnerable to a crash with zero authentication required. The blast radius is availability — not data leakage or code execution — but model serving infrastructure going down during inference is operationally severe. Patch to TensorFlow 2.8.0 or 2.7.1 immediately and restrict what SavedModel files your pipelines will load.

What is the risk?

High severity in practice for organizations running model-serving infrastructure exposed to untrusted inputs. CVSS 7.5 reflects worst-case: network-reachable, no auth, low complexity. Real-world risk depends on whether your TF deployment loads externally-sourced models (high risk) or only internal, version-controlled models (lower risk). No evidence of KEV listing or active exploitation, but PoC references are public in the GitHub advisory.

What systems are affected?

Package Ecosystem Vulnerable Range Patched
TensorFlow pip No patch
195.8K OpenSSF 7.1 3.7K dependents Pushed 3d ago 4% patched ~1372d to patch Full package profile →

Do you use TensorFlow? You're affected.

How severe is it?

CVSS 3.1
7.5 / 10
EPSS
1.0%
chance of exploitation in 30 days
Higher than 57% of all CVEs
Exploitation Status
Exploit Available
Exploitation: MEDIUM
Sophistication
Moderate
Exploitation Confidence
medium
CISA SSVC: Public PoC
Public PoC indexed (trickest/cve)
Composite signal derived from CISA KEV, VulnCheck KEV, CISA SSVC, EPSS, Metasploit, Exploit-DB, trickest/cve, Nuclei templates, and inthewild.io exploitation reports.

What is the attack surface?

AV AC PR UI S C I A
AV Network
AC Low
PR None
UI None
S Unchanged
C None
I None
A High

What should I do?

5 steps
  1. PATCH

    Upgrade to TensorFlow 2.8.0 or 2.7.1 — patches are in commit 955059813cc325dc1db5e2daa6221271406d4439.

  2. VALIDATE

    Implement SavedModel integrity checks (cryptographic signatures or hash verification) before loading any externally-sourced model file.

  3. SANDBOX

    Run model loading in isolated subprocesses or containers so a crash does not take down the entire serving fleet — use process supervision (systemd, Kubernetes restartPolicy).

  4. RESTRICT

    Enforce allow-listing of model sources; block loading SavedModels from untrusted registries or user uploads without review.

  5. DETECT

    Monitor for abnormal TF process crashes or OOM-killer events in model serving pods; correlate with recently loaded model artifacts.

What does CISA's SSVC say?

Decision Track*
Exploitation poc
Automatable No
Technical Impact partial

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:

EU AI Act
Art. 15 - Accuracy, robustness and cybersecurity
ISO 42001
A.9.2 - AI system security and resilience
NIST AI RMF
GOVERN 1.7 - Processes and procedures are in place for decommissioning and phasing out AI systems MANAGE 2.2 - Mechanisms are in place and applied to sustain the value of deployed AI systems

Frequently Asked Questions

What is CVE-2022-23590?

Any TensorFlow deployment that loads externally-sourced or user-supplied SavedModel files is vulnerable to a crash with zero authentication required. The blast radius is availability — not data leakage or code execution — but model serving infrastructure going down during inference is operationally severe. Patch to TensorFlow 2.8.0 or 2.7.1 immediately and restrict what SavedModel files your pipelines will load.

Is CVE-2022-23590 actively exploited?

Proof-of-concept exploit code is publicly available for CVE-2022-23590, increasing the risk of exploitation.

How to fix CVE-2022-23590?

1. PATCH: Upgrade to TensorFlow 2.8.0 or 2.7.1 — patches are in commit 955059813cc325dc1db5e2daa6221271406d4439. 2. VALIDATE: Implement SavedModel integrity checks (cryptographic signatures or hash verification) before loading any externally-sourced model file. 3. SANDBOX: Run model loading in isolated subprocesses or containers so a crash does not take down the entire serving fleet — use process supervision (systemd, Kubernetes restartPolicy). 4. RESTRICT: Enforce allow-listing of model sources; block loading SavedModels from untrusted registries or user uploads without review. 5. DETECT: Monitor for abnormal TF process crashes or OOM-killer events in model serving pods; correlate with recently loaded model artifacts.

What systems are affected by CVE-2022-23590?

This vulnerability affects the following AI/ML architecture patterns: model serving, training pipelines, ML platforms / model registries, batch inference pipelines.

What is the CVSS score for CVE-2022-23590?

CVE-2022-23590 has a CVSS v3.1 base score of 7.5 (HIGH). The EPSS exploitation probability is 0.96%.

What is the AI security impact?

Affected AI Architectures

model servingtraining pipelinesML platforms / model registriesbatch inference pipelines

MITRE ATLAS Techniques

AML.T0010.001 AI Software
AML.T0011.000 Unsafe AI Artifacts
AML.T0029 Denial of AI Service
AML.T0049 Exploit Public-Facing Application

Compliance Controls Affected

EU AI Act: Art. 15
ISO 42001: A.9.2
NIST AI RMF: GOVERN 1.7, MANAGE 2.2

What are the technical details?

Original Advisory

Tensorflow is an Open Source Machine Learning Framework. A `GraphDef` from a TensorFlow `SavedModel` can be maliciously altered to cause a TensorFlow process to crash due to encountering a `StatusOr` value that is an error and forcibly extracting the value from it. We have patched the issue in multiple GitHub commits and these will be included in TensorFlow 2.8.0 and TensorFlow 2.7.1, as both are affected.

Exploitation Scenario

An adversary identifies an organization running a public-facing TensorFlow model inference API or an internal MLOps platform that accepts user-uploaded models. They craft a SavedModel with a GraphDef containing a StatusOr value in an error state that is then forcibly dereferenced during graph construction. The attacker uploads this file or delivers it via a shared model registry (e.g., HuggingFace, internal Artifactory). When the serving infrastructure or training pipeline loads the model, the TF process crashes. In a Kubernetes deployment, this triggers repeated CrashLoopBackOff cycles. In a multi-tenant scenario, a single uploaded file denies service to all tenants sharing that serving node.

Weaknesses (CWE)

CWE-754 — Improper Check for Unusual or Exceptional Conditions: The product does not check or incorrectly checks for unusual or exceptional conditions that are not expected to occur frequently during day to day operation of the product.

  • [Requirements] Use a language that does not allow this weakness to occur or provides constructs that make this weakness easier to avoid. Choose languages with features such as exception handling that force the programmer to anticipate unusual conditions that may generate exceptions. Custom exceptions may need to be developed to handle unusual business-logic conditions. Be careful not to pass sensitive exceptions back to the user (CWE-209, CWE-248).
  • [Implementation] Check the results of all functions that return a value and verify that the value is expected.

Source: MITRE CWE corpus.

CVSS Vector

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Timeline

Published
February 4, 2022
Last Modified
November 21, 2024
First Seen
February 4, 2022

Related Vulnerabilities