CVE-2022-29196: TensorFlow: DoS via invalid Conv3D filter input
MEDIUM PoC AVAILABLE CISA: TRACK*Low-priority patching item for teams running TensorFlow below 2.6.4/2.7.2/2.8.1/2.9.0. An attacker with local access can crash training jobs by passing a malformed filter_sizes argument to Conv3DBackpropFilterV2, triggering a CHECK assertion failure. Upgrade to any patched version; highest risk on multi-tenant shared GPU clusters where job isolation is weak.
Risk Assessment
Low operational risk for most environments. Exploitation requires local access with user-level privileges — no remote vector exists without a prior foothold. Impact is strictly availability (no confidentiality or integrity exposure). Primary threat actor is a malicious insider or an adversary who has already compromised a training node or shared notebook environment. Not in CISA KEV; no public evidence of active exploitation.
Affected Systems
| Package | Ecosystem | Vulnerable Range | Patched |
|---|---|---|---|
| tensorflow | pip | — | No patch |
Do you use tensorflow? You're affected.
Severity & Risk
Attack Surface
Recommended Action
4 steps-
Patch: Upgrade TensorFlow to ≥2.6.4, ≥2.7.2, ≥2.8.1, or ≥2.9.0 immediately if running 3D CNN workloads.
-
Isolation: Enforce job-level sandboxing on shared ML compute clusters; restrict who can submit arbitrary training scripts.
-
Detection: Monitor TensorFlow process logs for CHECK-failure stack traces in conv_grad_ops_3d.cc as an anomaly indicator.
-
Interim workaround if patching is delayed: validate that filter_sizes is a 1D tensor before calling the op in any custom training code.
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-29196?
Low-priority patching item for teams running TensorFlow below 2.6.4/2.7.2/2.8.1/2.9.0. An attacker with local access can crash training jobs by passing a malformed filter_sizes argument to Conv3DBackpropFilterV2, triggering a CHECK assertion failure. Upgrade to any patched version; highest risk on multi-tenant shared GPU clusters where job isolation is weak.
Is CVE-2022-29196 actively exploited?
Proof-of-concept exploit code is publicly available for CVE-2022-29196, increasing the risk of exploitation.
How to fix CVE-2022-29196?
1. Patch: Upgrade TensorFlow to ≥2.6.4, ≥2.7.2, ≥2.8.1, or ≥2.9.0 immediately if running 3D CNN workloads. 2. Isolation: Enforce job-level sandboxing on shared ML compute clusters; restrict who can submit arbitrary training scripts. 3. Detection: Monitor TensorFlow process logs for CHECK-failure stack traces in conv_grad_ops_3d.cc as an anomaly indicator. 4. Interim workaround if patching is delayed: validate that filter_sizes is a 1D tensor before calling the op in any custom training code.
What systems are affected by CVE-2022-29196?
This vulnerability affects the following AI/ML architecture patterns: training pipelines, MLOps infrastructure, shared GPU compute clusters.
What is the CVSS score for CVE-2022-29196?
CVE-2022-29196 has a CVSS v3.1 base score of 5.5 (MEDIUM). The EPSS exploitation probability is 0.06%.
Technical Details
NVD Description
TensorFlow is an open source platform for machine learning. Prior to versions 2.9.0, 2.8.1, 2.7.2, and 2.6.4, the implementation of `tf.raw_ops.Conv3DBackpropFilterV2` does not fully validate the input arguments. This results in a `CHECK`-failure which can be used to trigger a denial of service attack. The code does not validate that the `filter_sizes` argument is a vector. Versions 2.9.0, 2.8.1, 2.7.2, and 2.6.4 contain a patch for this issue.
Exploitation Scenario
An attacker with access to a shared ML training platform — internal GPU cluster, cloud notebook (Vertex AI, SageMaker), or CI/CD pipeline running model training — submits a script calling tf.raw_ops.Conv3DBackpropFilterV2 with filter_sizes passed as a 2D tensor instead of a vector. TensorFlow's CHECK macro fires, immediately killing the training process with a SIGABRT. On a shared cluster, this crashes co-located jobs and can be looped to continuously deny training capacity, delaying model delivery or erasing unsaved checkpoints from production model retraining pipelines.
Weaknesses (CWE)
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H References
- github.com/tensorflow/tensorflow/blob/f3b9bf4c3c0597563b289c0512e98d4ce81f886e/tensorflow/core/kernels/conv_grad_ops_3d.cc 3rd Party
- github.com/tensorflow/tensorflow/commit/174c5096f303d5be7ed2ca2662b08371bff4ab88 Patch 3rd Party
- github.com/tensorflow/tensorflow/releases/tag/v2.6.4 Release 3rd Party
- github.com/tensorflow/tensorflow/releases/tag/v2.7.2 Release 3rd Party
- github.com/tensorflow/tensorflow/releases/tag/v2.8.1 Release 3rd Party
- github.com/tensorflow/tensorflow/releases/tag/v2.9.0 Release 3rd Party
- github.com/tensorflow/tensorflow/security/advisories/GHSA-5v77-j66x-4c4g Exploit Patch 3rd Party
- github.com/gclonly/im Exploit
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