CVE-2022-23590: TensorFlow: DoS via malicious SavedModel GraphDef
HIGH PoC AVAILABLE CISA: TRACK*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.
Risk Assessment
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.
Affected Systems
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| tensorflow | pip | — | No patch |
Do you use tensorflow? You're affected.
Severity & Risk
Attack Surface
Recommended Action
5 steps-
PATCH
Upgrade to TensorFlow 2.8.0 or 2.7.1 — patches are in commit 955059813cc325dc1db5e2daa6221271406d4439.
-
VALIDATE
Implement SavedModel integrity checks (cryptographic signatures or hash verification) before loading any externally-sourced model file.
-
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).
-
RESTRICT
Enforce allow-listing of model sources; block loading SavedModels from untrusted registries or user uploads without review.
-
DETECT
Monitor for abnormal TF process crashes or OOM-killer events in model serving pods; correlate with recently loaded model artifacts.
CISA SSVC Assessment
Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.
Classification
Compliance Impact
This CVE is relevant to:
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.24%.
Technical Details
NVD Description
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)
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H References
- github.com/tensorflow/tensorflow/blob/274df9b02330b790aa8de1cee164b70f72b9b244/tensorflow/core/graph/graph.cc Exploit 3rd Party
- github.com/tensorflow/tensorflow/commit/955059813cc325dc1db5e2daa6221271406d4439 Patch 3rd Party
- github.com/tensorflow/tensorflow/security/advisories/GHSA-pqrv-8r2f-7278 Patch 3rd Party
Timeline
Related Vulnerabilities
CVE-2020-15196 9.9 TensorFlow: heap OOB read in sparse/ragged count ops
Same package: tensorflow CVE-2020-15205 9.8 TensorFlow: heap overflow in StringNGrams, ASLR bypass
Same package: tensorflow CVE-2020-15208 9.8 TFLite: OOB read/write via tensor dimension mismatch
Same package: tensorflow CVE-2019-16778 9.8 TensorFlow: heap overflow in UnsortedSegmentSum op
Same package: tensorflow CVE-2022-23587 9.8 TensorFlow: integer overflow in Grappler enables RCE
Same package: tensorflow
AI Threat Alert