TensorFlow is an open source platform for machine learning. In affected versions the implementation of `tf.math.segment_*` operations results in a `CHECK`-fail related abort (and denial of service) if a segment id in `segment_ids` is large. This is similar to CVE-2021-29584 (and similar other reported vulnerabilities in TensorFlow, localized to specific APIs): the implementation (both on CPU and GPU) computes the output shape using `AddDim`. However, if the number of elements in the tensor overflows an `int64_t` value, `AddDim` results in a `CHECK` failure which provokes a `std::abort`. Instead, code should use `AddDimWithStatus`. The fix will be included in TensorFlow 2.7.0. We will also cherrypick this commit on TensorFlow 2.6.1, TensorFlow 2.5.2, and TensorFlow 2.4.4, as these are also affected and still in supported range.
cpe:2.3:a:google:tensorflow:*:*:*:*:*:*:*:*
455FB550-4C9C-4BD6-9F76-A627B62AB332
2.4.4
cpe:2.3:a:google:tensorflow:*:*:*:*:*:*:*:*
035CDF63-1548-4FB4-B8A9-B8D328FAF910
2.5.2
2.5.0
cpe:2.3:a:google:tensorflow:*:*:*:*:*:*:*:*
5D68D8D1-DB27-4395-9D3D-2BED901B852C
2.6.1
2.6.0
OR
**System information**
- Have I written custom code (as opposed to using a stock example script provided in TensorFlow): No
- OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Linux Ubuntu 18.04
- Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device: N/A
- TensorFlow installed from (source or binary): binary
- TensorFlow version (use command below):2.1.0
- Python version:3.7.6
- Bazel version (if compiling from source):N/A
- GCC/Compiler version (if compiling from source):N/A
- CUDA/cuDNN version:N/A
- GPU model and memory:N/A


**Describe the current behavior**
tf.math.segment_max/min/mean/sun/prod crashes(aborts) when `segment_ids` is large

**Describe the expected behavior**
expect an exception message if the input is unexpected instead of crash

**Standalone code to reproduce the issue**
~~~python
tf.math.segment_max(data=np.ones((1,10,1)), segment_ids=[1676240524292489355])
tf.math.segment_min(data=np.ones((1,10,1)), segment_ids=[1676240524292489355])
tf.math.segment_mean(data=np.ones((1,10,1)), segment_ids=[1676240524292489355])
tf.math.segment_sum(data=np.ones((1,10,1)), segment_ids=[1676240524292489355])
tf.math.segment_prod(data=np.ones((1,10,1)), segment_ids=[1676240524292489355])
~~~

Output:
~~~python
2021-02-03 16:44:25.849065: F tensorflow/core/framework/tensor_shape.cc:405] Check failed: 0 <= new_num_elements (0 vs. -1684338830784658056)
Aborted (core dumped)
~~~

Related issue: #46696
tf.math.segment_max/min/mean/sun/prod crashes(aborts) when segment_ids is large
This is a GitHub Issue
repo:tensorflow
owner:tensorflow
Title : tf.math.segment_max/min/mean/sun/prod crashes(aborts) when segment_ids is large
Issue date:

--- start body ---
**System information**
- Have I written custom code (as opposed to using a stock example script provided in TensorFlow): No
- OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Linux Ubuntu 18.04
- Mobile device (e.g. iPhone 8, Pixel 2, Samsung Galaxy) if the issue happens on mobile device: N/A
- TensorFlow installed from (source or binary): binary
- TensorFlow version (use command below):2.1.0
- Python version:3.7.6
- Bazel version (if compiling from source):N/A
- GCC/Compiler version (if compiling from source):N/A
- CUDA/cuDNN version:N/A
- GPU model and memory:N/A


**Describe the current behavior**
tf.math.segment_max/min/mean/sun/prod crashes(aborts) when `segment_ids` is large

**Describe the expected behavior**
expect an exception message if the input is unexpected instead of crash

**Standalone code to reproduce the issue**
~~~python
tf.math.segment_max(data=np.ones((1,10,1)), segment_ids=[1676240524292489355])
tf.math.segment_min(data=np.ones((1,10,1)), segment_ids=[1676240524292489355])
tf.math.segment_mean(data=np.ones((1,10,1)), segment_ids=[1676240524292489355])
tf.math.segment_sum(data=np.ones((1,10,1)), segment_ids=[1676240524292489355])
tf.math.segment_prod(data=np.ones((1,10,1)), segment_ids=[1676240524292489355])
~~~

Output:
~~~python
2021-02-03 16:44:25.849065: F tensorflow/core/framework/tensor_shape.cc:405] Check failed: 0 <= new_num_elements (0 vs. -1684338830784658056)
Aborted (core dumped)
~~~

Related issue: #46696
--- end body ---

comments :
--- start comments ---

--- end comments ---