High severityNVD Advisory· Published Mar 24, 2023· Updated Feb 19, 2025
TensorFlow has Segfault in Bincount with XLA
CVE-2023-25675
Description
TensorFlow is an open source machine learning platform. When running versions prior to 2.12.0 and 2.11.1 with XLA, tf.raw_ops.Bincount segfaults when given a parameter weights that is neither the same shape as parameter arr nor a length-0 tensor. A fix is included in TensorFlow 2.12.0 and 2.11.1.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
tensorflowPyPI | < 2.11.1 | 2.11.1 |
tensorflow-cpuPyPI | < 2.11.1 | 2.11.1 |
tensorflow-gpuPyPI | < 2.11.1 | 2.11.1 |
Affected products
1- Range: < 2.11.1
Patches
18ae76cf085f4[Tensorflow] Fix security vulnerability with DenseBincountOp
3 files changed · +66 −7
tensorflow/compiler/tests/bincount_op_test.py+40 −0 added@@ -0,0 +1,40 @@ +# Copyright 2023 The TensorFlow Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============================================================================== +"""Tests for bincount using the XLA JIT.""" +from tensorflow.compiler.tests import xla_test +from tensorflow.python.framework import errors +from tensorflow.python.ops import gen_math_ops +from tensorflow.python.platform import googletest + + +class BincountTest(xla_test.XLATestCase): + + def testInputRank0(self): + with self.session(): + with self.test_scope(): + bincount = gen_math_ops.bincount(arr=6, size=804, weights=[52, 351]) + + with self.assertRaisesRegex( + errors.InvalidArgumentError, + ( + "`weights` must be the same shape as `arr` or a length-0" + " `Tensor`, in which case it acts as all weights equal to 1." + ), + ): + self.evaluate(bincount) + + +if __name__ == "__main__": + googletest.main()
tensorflow/compiler/tests/BUILD+16 −0 modified@@ -2417,3 +2417,19 @@ tf_xla_py_test( "//tensorflow/python:training", ], ) + +tf_xla_py_test( + name = "bincount_op_test", + size = "small", + srcs = ["bincount_op_test.py"], + enable_mlir_bridge = False, + python_version = "PY3", + shard_count = 10, + tags = [ + "no_pip", # TODO(b/149738646): fix pip install so these tests run on kokoro pip + ], + deps = [ + ":xla_test", + "//tensorflow/python:platform_test", + ], +)
tensorflow/compiler/tf2xla/kernels/bincount_op.cc+10 −7 modified@@ -62,21 +62,15 @@ class DenseBincountOp : public XlaOpKernel { StatusOr<xla::Shape> input_shape_or = ctx->builder()->GetShape(input); OP_REQUIRES_OK(ctx, input_shape_or.status()); auto input_shape = input_shape_or.value(); - auto size = input_shape.dimensions(0); - if (!size) { - output = xla::Broadcast(zero, {output_size}); - ctx->SetOutput(0, output); - return; - } auto rank = input_shape.rank(); OP_REQUIRES(ctx, rank <= 2, errors::InvalidArgument( "Shape must be at most rank 2 but is rank ", rank)); - xla::XlaOp weights = ctx->Input(2); StatusOr<xla::Shape> weights_shape_or = ctx->builder()->GetShape(weights); + OP_REQUIRES_OK(ctx, weights_shape_or.status()); auto weights_shape = weights_shape_or.value(); @@ -91,11 +85,20 @@ class DenseBincountOp : public XlaOpKernel { "1. Received ", weights_shape.DebugString())); + auto size = input_shape.dimensions(0); + + if (!size) { + output = xla::Broadcast(zero, {output_size}); + ctx->SetOutput(0, output); + return; + } + auto weights_size = weights_shape.dimensions(0); bool has_weights = false; if (weights_size) { has_weights = true; } + xla::Shape output_shape = xla::ShapeUtil::MakeShape(dtype, {output_size}); xla::ScatterDimensionNumbers scatter_dnums; scatter_dnums.set_index_vector_dim(1);
Vulnerability mechanics
Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
4- github.com/advisories/GHSA-7x4v-9gxg-9hwjghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2023-25675ghsaADVISORY
- github.com/tensorflow/tensorflow/commit/8ae76cf085f4be26295d2ecf2081e759e04b8acfghsax_refsource_MISCWEB
- github.com/tensorflow/tensorflow/security/advisories/GHSA-7x4v-9gxg-9hwjghsax_refsource_CONFIRMWEB
News mentions
0No linked articles in our index yet.