CVE-2021-29521

LOW

TensorFlow - Memory Corruption

Title source: llm
STIX 2.1

Description

TensorFlow is an end-to-end open source platform for machine learning. Specifying a negative dense shape in `tf.raw_ops.SparseCountSparseOutput` results in a segmentation fault being thrown out from the standard library as `std::vector` invariants are broken. This is because the implementation(https://github.com/tensorflow/tensorflow/blob/8f7b60ee8c0206a2c99802e3a4d1bb55d2bc0624/tensorflow/core/kernels/count_ops.cc#L199-L213) assumes the first element of the dense shape is always positive and uses it to initialize a `BatchedMap<T>` (i.e., `std::vector<absl::flat_hash_map<int64,T>>`(https://github.com/tensorflow/tensorflow/blob/8f7b60ee8c0206a2c99802e3a4d1bb55d2bc0624/tensorflow/core/kernels/count_ops.cc#L27)) data structure. If the `shape` tensor has more than one element, `num_batches` is the first value in `shape`. Ensuring that the `dense_shape` argument is a valid tensor shape (that is, all elements are non-negative) solves this issue. The fix will be included in TensorFlow 2.5.0. We will also cherrypick this commit on TensorFlow 2.4.2 and TensorFlow 2.3.3.

Scores

CVSS v3 2.5
EPSS 0.0001
EPSS Percentile 1.0%
Attack Vector LOCAL
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:L

Details

CWE
CWE-131
Status published
Products (4)
google/tensorflow 2.3.0 - 2.3.3
pypi/tensorflow 2.3.0 - 2.3.3PyPI
pypi/tensorflow-cpu 2.3.0 - 2.3.3PyPI
pypi/tensorflow-gpu 2.3.0 - 2.3.3PyPI
Published May 14, 2021
Tracked Since Feb 18, 2026