CVE-2022-29200: TensorFlow: LSTMBlockCell DoS via invalid tensor rank
MEDIUM PoC AVAILABLE CISA: TRACK*TensorFlow's LSTMBlockCell op crashes on malformed tensor inputs due to missing rank validation, enabling denial of service. Exploitability requires local access with low privileges — highest risk in shared ML platforms, multi-tenant Jupyter environments, or MLaaS APIs that expose raw TF ops. Patch immediately to TF 2.9.0, 2.8.1, 2.7.2, or 2.6.4.
Risk Assessment
Medium risk overall, but elevated in multi-tenant or shared ML infrastructure. The local attack vector and low-privilege requirement constrain exploitation to internal threats or compromised accounts. In isolated single-user training environments the practical risk is low. In shared GPU clusters, ML platforms, or inference APIs that accept user-supplied models/ops, a single malicious call can crash the TF process and disrupt co-located workloads. No active exploitation or weaponized PoC beyond 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-
Upgrade TensorFlow to 2.9.0, 2.8.1, 2.7.2, or 2.6.4 — this is the only fix.
-
In shared environments, restrict access to tf.raw_ops APIs and block direct raw op invocations from untrusted users.
-
Apply input shape/rank validation at the application layer before passing tensors to LSTMBlockCell.
-
Monitor TF process logs for CHECK-failure patterns (grep 'Check failed' in TF stderr) as anomaly signals.
-
Audit dependency inventory for pinned TF versions below the patched releases in CI/CD pipelines and containerized training jobs.
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-29200?
TensorFlow's LSTMBlockCell op crashes on malformed tensor inputs due to missing rank validation, enabling denial of service. Exploitability requires local access with low privileges — highest risk in shared ML platforms, multi-tenant Jupyter environments, or MLaaS APIs that expose raw TF ops. Patch immediately to TF 2.9.0, 2.8.1, 2.7.2, or 2.6.4.
Is CVE-2022-29200 actively exploited?
Proof-of-concept exploit code is publicly available for CVE-2022-29200, increasing the risk of exploitation.
How to fix CVE-2022-29200?
1. Upgrade TensorFlow to 2.9.0, 2.8.1, 2.7.2, or 2.6.4 — this is the only fix. 2. In shared environments, restrict access to tf.raw_ops APIs and block direct raw op invocations from untrusted users. 3. Apply input shape/rank validation at the application layer before passing tensors to LSTMBlockCell. 4. Monitor TF process logs for CHECK-failure patterns (grep 'Check failed' in TF stderr) as anomaly signals. 5. Audit dependency inventory for pinned TF versions below the patched releases in CI/CD pipelines and containerized training jobs.
What systems are affected by CVE-2022-29200?
This vulnerability affects the following AI/ML architecture patterns: training pipelines, model serving, shared ML notebooks, recurrent neural network inference.
What is the CVSS score for CVE-2022-29200?
CVE-2022-29200 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.LSTMBlockCell` 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 the ranks of any of the arguments to this API call. This results in `CHECK`-failures when the elements of the tensor are accessed. 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 platform (e.g., a data scientist account on a multi-tenant Jupyter hub or internal MLOps portal) submits a training job or notebook cell that calls tf.raw_ops.LSTMBlockCell with a tensor of incorrect rank — for example, passing a 1D tensor where a 2D matrix is expected. TensorFlow's CHECK macro fires during tensor element access, raising a CHECK-failure exception that terminates the TF runtime process. If the platform runs jobs in a shared TF serving process, this crashes the inference server for all users. In a Kubernetes-based ML platform, repeated submissions can trigger cascading pod restarts, degrading cluster availability and disrupting legitimate model training workloads.
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/rnn/lstm_ops.cc 3rd Party
- github.com/tensorflow/tensorflow/commit/803404044ae7a1efac48ba82d74111fce1ddb09a 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-2vv3-56qg-g2cf 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