CVE-2022-23570: TensorFlow: null-deref DoS via malformed protobuf tensor

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

An authenticated remote attacker can crash TensorFlow inference servers by sending a protobuf tensor with missing mutable argument attributes — the null-dereference is silently skipped in debug builds but triggers a crash in production. Any internet-facing TF Serving endpoint or internal inference API accepting external tensor inputs is exposed. Patch to TensorFlow 2.8.0, 2.7.1, or 2.6.3 immediately and restrict network access to inference endpoints.

Risk Assessment

Medium severity (CVSS 6.5) but operationally significant for AI/ML deployments. Exploitation requires only low privileges and no user interaction over the network — a low bar for disrupting inference infrastructure. Impact is purely availability (no data exfiltration risk), but repeated crashes of ML inference servers can halt production AI pipelines. Unpatched TF Serving instances exposed via internal APIs or gRPC endpoints in multi-tenant environments carry the highest operational risk.

Affected Systems

Package Ecosystem Vulnerable Range Patched
tensorflow pip No patch
195.0K OpenSSF 7.2 3.7K dependents Pushed 6d ago 4% patched ~1372d to patch Full package profile →

Do you use tensorflow? You're affected.

Severity & Risk

CVSS 3.1
6.5 / 10
EPSS
0.5%
chance of exploitation in 30 days
Higher than 66% 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, CISA SSVC, EPSS, trickest/cve, and Nuclei templates.

Attack Surface

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

Recommended Action

5 steps
  1. Patch: Upgrade to TensorFlow 2.8.0, 2.7.1, or 2.6.3.

  2. Network controls: Restrict access to TF Serving gRPC (port 8500) and REST (port 8501) endpoints; never expose them directly to the internet.

  3. Input validation: Add a preprocessing layer that validates protobuf tensor attributes before passing to TF runtime.

  4. Detection: Monitor inference server processes for unexpected restarts or crash loops (container OOMKilled/CrashLoopBackOff events in Kubernetes).

  5. Workaround if patching is delayed: Run TF Serving behind an authenticated API gateway that enforces schema validation on tensor payloads.

CISA SSVC Assessment

Decision Track*
Exploitation poc
Automatable No
Technical Impact partial

Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.

Classification

Compliance Impact

This CVE is relevant to:

EU AI Act
Article 15 - Accuracy, Robustness and Cybersecurity Article 9 - Risk Management System
ISO 42001
A.6.2 - AI System Technical Robustness and Safety Clause 6.1.2 - AI Risk Assessment
NIST AI RMF
MANAGE 2.2 - Mechanisms to Respond to and Recover from AI Risks MAP 5.1 - Likelihood of Vulnerabilities or Limitations Being Discovered

Frequently Asked Questions

What is CVE-2022-23570?

An authenticated remote attacker can crash TensorFlow inference servers by sending a protobuf tensor with missing mutable argument attributes — the null-dereference is silently skipped in debug builds but triggers a crash in production. Any internet-facing TF Serving endpoint or internal inference API accepting external tensor inputs is exposed. Patch to TensorFlow 2.8.0, 2.7.1, or 2.6.3 immediately and restrict network access to inference endpoints.

Is CVE-2022-23570 actively exploited?

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

How to fix CVE-2022-23570?

1. Patch: Upgrade to TensorFlow 2.8.0, 2.7.1, or 2.6.3. 2. Network controls: Restrict access to TF Serving gRPC (port 8500) and REST (port 8501) endpoints; never expose them directly to the internet. 3. Input validation: Add a preprocessing layer that validates protobuf tensor attributes before passing to TF runtime. 4. Detection: Monitor inference server processes for unexpected restarts or crash loops (container OOMKilled/CrashLoopBackOff events in Kubernetes). 5. Workaround if patching is delayed: Run TF Serving behind an authenticated API gateway that enforces schema validation on tensor payloads.

What systems are affected by CVE-2022-23570?

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

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

CVE-2022-23570 has a CVSS v3.1 base score of 6.5 (MEDIUM). The EPSS exploitation probability is 0.51%.

Technical Details

NVD Description

Tensorflow is an Open Source Machine Learning Framework. When decoding a tensor from protobuf, TensorFlow might do a null-dereference if attributes of some mutable arguments to some operations are missing from the proto. This is guarded by a `DCHECK`. However, `DCHECK` is a no-op in production builds and an assertion failure in debug builds. In the first case execution proceeds to the dereferencing of the null pointer, whereas in the second case it results in a crash due to the assertion failure. The fix will be included in TensorFlow 2.8.0. We will also cherrypick this commit on TensorFlow 2.7.1, and TensorFlow 2.6.3, as these are also affected and still in supported range.

Exploitation Scenario

An adversary with low-privilege API credentials (e.g., a compromised service account or internal user) sends a crafted gRPC inference request to a TF Serving endpoint. The request contains a tensor in protobuf format where required mutable argument attributes for a sensitive operation (e.g., full_type_util.cc operations) are intentionally omitted. TensorFlow's production build silently bypasses the DCHECK guard, dereferences the null pointer, and the inference server process crashes. The attacker repeats this at intervals to sustain a denial-of-service against the ML serving layer, disrupting downstream applications that depend on model inference responses.

CVSS Vector

CVSS:3.1/AV:N/AC:L/PR:L/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