Skip to main content
← All vulnerabilities
CVE-2021-29521PYSEC-2021-647BIT-TENSORFLOW-2021-29521GHSA-HR84-FQVP-48MMPYSEC-2021-158PYSEC-2021-449

Segfault in SparseCountSparseOutput

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 2.3.3, 2.4.2
None on Exploit-DB, Metasploit or GitHub

Summary

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.

Timeline

  1. CVE published
  2. Record last updated

Affected versions

  • tensorflow tensorflow

    fixed in 2.3.3; From 2.4.0 · fixed in 2.4.2

  • tensorflow-gpuPyPI

    From 2.3.0 · fixed in 2.3.3; From 2.4.0 · fixed in 2.4.2

  • tensorflowPyPI

    From 2.3.0 · fixed in 2.3.3

  • tensorflowPyPI

    From 2.4.0 · fixed in 2.4.2

  • tensorflow-cpuPyPI

    From 2.3.0 · fixed in 2.3.3

  • tensorflow-cpuPyPI

    From 2.4.0 · fixed in 2.4.2

  • tensorflow-gpuPyPI

    From 2.3.0 · fixed in 2.3.3

  • tensorflow-gpuPyPI

    From 2.4.0 · fixed in 2.4.2

  • tensorflow-cpuPyPI

    From 2.3.0 · fixed in 2.3.3; From 2.4.0 · fixed in 2.4.2

  • tensorflowPyPI

    From 2.3.0 · fixed in 2.3.3; From 2.4.0 · fixed in 2.4.2

References 2

GitHub · tensorflow/tensorflow