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.
CVSS Details
- CVSS 3.1 Base Score: 7.7
- CVSS 3.1 Vector: (CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Suse | — | Upgrade tensorflow2Upgrade tensorflow2-liteUpgrade libtensorflow2-gnu-hpcUpgrade tensorflow2-lite-develUpgrade libiomp5Upgrade tensorflow2_2_6_0-gnu-hpcUpgrade libiomp5-gnu-openmpi2-hpcUpgrade libtensorflow2-gnu-openmpi2-hpcUpgrade tensorflow2_2_6_0-gnu-hpc-develUpgrade bazel-skylib1.0.3-sourceUpgrade libtensorflow_cc2-gnu-hpcUpgrade tensorflow2_2_6_0-gnu-openmpi2-hpc-develUpgrade tensorflow2-docUpgrade bazel3.7Upgrade libtensorflow2Upgrade tensorflow2_2_6_0-gnu-hpc-docUpgrade tensorflow2-gnu-hpcUpgrade tensorflow2_2_6_0-gnu-openmpi2-hpcUpgrade libtensorflow_cc2Upgrade libtensorflow_framework2Upgrade tensorflow2-develUpgrade libtensorflow_framework2-gnu-openmpi2-hpcUpgrade libtensorflow_cc2-gnu-openmpi2-hpcUpgrade tensorflow2_2_6_0-gnu-openmpi2-hpc-docUpgrade libtensorflow_framework2-gnu-hpcUpgrade tensorflow2-gnu-openmpi2-hpcUpgrade libiomp5-gnu-hpc | Oct 26, 2022 | Aug 12, 2021 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub