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 libtensorflow_cc2-gnu-hpcUpgrade bazel3.7Upgrade tensorflow2-lite-develUpgrade tensorflow2_2_6_0-gnu-hpcUpgrade tensorflow2_2_6_0-gnu-openmpi2-hpc-develUpgrade bazel-skylib1.0.3-sourceUpgrade libiomp5Upgrade libtensorflow2-gnu-openmpi2-hpcUpgrade libtensorflow2-gnu-hpcUpgrade tensorflow2-docUpgrade libiomp5-gnu-openmpi2-hpcUpgrade tensorflow2-liteUpgrade tensorflow2_2_6_0-gnu-hpc-develUpgrade tensorflow2Upgrade libtensorflow2Upgrade libtensorflow_cc2-gnu-openmpi2-hpcUpgrade libtensorflow_framework2-gnu-hpcUpgrade tensorflow2-gnu-openmpi2-hpcUpgrade libtensorflow_framework2Upgrade tensorflow2_2_6_0-gnu-openmpi2-hpc-docUpgrade tensorflow2-gnu-hpcUpgrade libiomp5-gnu-hpcUpgrade tensorflow2_2_6_0-gnu-openmpi2-hpcUpgrade libtensorflow_cc2Upgrade tensorflow2_2_6_0-gnu-hpc-docUpgrade libtensorflow_framework2-gnu-openmpi2-hpcUpgrade tensorflow2-devel | Oct 26, 2022 | Aug 12, 2021 |
Prioritize 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