CVE-2022-23570: TensorFlow: null-deref DoS via malformed protobuf tensor
MEDIUM PoC AVAILABLE CISA: TRACK*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 |
Do you use tensorflow? You're affected.
Severity & Risk
Attack Surface
Recommended Action
5 steps-
Patch: Upgrade to TensorFlow 2.8.0, 2.7.1, or 2.6.3.
-
Network controls: Restrict access to TF Serving gRPC (port 8500) and REST (port 8501) endpoints; never expose them directly to the internet.
-
Input validation: Add a preprocessing layer that validates protobuf tensor attributes before passing to TF runtime.
-
Detection: Monitor inference server processes for unexpected restarts or crash loops (container OOMKilled/CrashLoopBackOff events in Kubernetes).
-
Workaround if patching is delayed: Run TF Serving behind an authenticated API gateway that enforces schema validation on tensor payloads.
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-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.
Weaknesses (CWE)
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H References
- github.com/tensorflow/tensorflow/blob/a1320ec1eac186da1d03f033109191f715b2b130/tensorflow/core/framework/full_type_util.cc Exploit 3rd Party
- github.com/tensorflow/tensorflow/commit/8a513cec4bec15961fbfdedcaa5376522980455c Patch 3rd Party
- github.com/tensorflow/tensorflow/security/advisories/GHSA-9p77-mmrw-69c7 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