CVE-2021-37647

MediumCVSS 5.5/10Last modified Jun 17, 2026

Description

TensorFlow is an end-to-end open source platform for machine learning. When a user does not supply arguments that determine a valid sparse tensor, `tf.raw_ops.SparseTensorSliceDataset` implementation can be made to dereference a null pointer. The [implementation](https://github.com/tensorflow/tensorflow/blob/8d72537c6abf5a44103b57b9c2e22c14f5f49698/tensorflow/core/kernels/data/sparse_tensor_slice_dataset_op.cc#L240-L251) has some argument validation but fails to consider the case when either `indices` or `values` are provided for an empty sparse tensor when the other is not. If `indices` is empty, then [code that performs validation](https://github.com/tensorflow/tensorflow/blob/8d72537c6abf5a44103b57b9c2e22c14f5f49698/tensorflow/core/kernels/data/sparse_tensor_slice_dataset_op.cc#L260-L261) (i.e., checking that the indices are monotonically increasing) results in a null pointer dereference. If `indices` as provided by the user is empty, then `indices` in the C++ code above is backed by an empty `std::vector`, hence calling `indices->dim_size(0)` results in null pointer dereferencing (same as calling `std::vector::at()` on an empty vector). We have patched the issue in GitHub commit 02cc160e29d20631de3859c6653184e3f876b9d7. The fix will be included in TensorFlow 2.6.0. We will also cherrypick this commit on TensorFlow 2.5.1, TensorFlow 2.4.3, and TensorFlow 2.3.4, as these are also affected and still in supported range.

Metrics

CVSS 3.1 5.5/10CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

Weakness enumeration

Affected software

VendorProductVersions
tensorflowtensorflow>= 2.5.0, < 2.5.1; >= 2.4.0, < 2.4.3; < 2.3.4

References

Timeline

Published
Aug 12, 2021
Last modified
Jun 17, 2026
NVD status
Modified

Related CVEs from 2021

CVE-2021-376487.8TensorFlow is an end-to-end open source platform for machine learning. In affected versions the code for `tf.raw_ops.SaveV2` does not properCVE-2021-376495.5TensorFlow is an end-to-end open source platform for machine learning. The code for `tf.raw_ops.UncompressElement` can be made to trigger a CVE-2021-37657.5validator.js is vulnerable to Inefficient Regular Expression ComplexityCVE-2021-376507.8TensorFlow is an end-to-end open source platform for machine learning. In affected versions the implementation for `tf.raw_ops.ExperimentalDCVE-2021-376517.8TensorFlow is an end-to-end open source platform for machine learning. In affected versions the implementation for `tf.raw_ops.FractionalAvgCVE-2021-376527.8TensorFlow is an end-to-end open source platform for machine learning. In affected versions the implementation for `tf.raw_ops.BoostedTreesCCVE-2021-376535.5TensorFlow is an end-to-end open source platform for machine learning. In affected versions an attacker can trigger a crash via a floating pCVE-2021-376547.1TensorFlow is an end-to-end open source platform for machine learning. In affected versions an attacker can trigger a crash via a `CHECK`-faCVE-2021-376557.3TensorFlow is an end-to-end open source platform for machine learning. In affected versions an attacker can trigger a read from outside of bCVE-2021-376567.8TensorFlow is an end-to-end open source platform for machine learning. In affected versions an attacker can cause undefined behavior via binCVE-2021-376577.8TensorFlow is an end-to-end open source platform for machine learning. In affected versions an attacker can cause undefined behavior via binCVE-2021-376587.8TensorFlow is an end-to-end open source platform for machine learning. In affected versions an attacker can cause undefined behavior via bin