Moderate severityNVD Advisory· Published Nov 18, 2022· Updated Apr 22, 2025
ThreadUnsafeUnigramCandidateSampler Heap out of bounds in Tensorflow
CVE-2022-41880
Description
TensorFlow is an open source platform for machine learning. When the BaseCandidateSamplerOp function receives a value in true_classes larger than range_max, a heap oob read occurs. We have patched the issue in GitHub commit b389f5c944cadfdfe599b3f1e4026e036f30d2d4. The fix will be included in TensorFlow 2.11. We will also cherrypick this commit on TensorFlow 2.10.1, 2.9.3, and TensorFlow 2.8.4, as these are also affected and still in supported range.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
tensorflowPyPI | >= 2.10.0, < 2.10.1 | 2.10.1 |
tensorflow-cpuPyPI | >= 2.10.0, < 2.10.1 | 2.10.1 |
tensorflow-gpuPyPI | >= 2.10.0, < 2.10.1 | 2.10.1 |
tensorflowPyPI | < 2.8.4 | 2.8.4 |
tensorflow-cpuPyPI | < 2.8.4 | 2.8.4 |
tensorflow-gpuPyPI | < 2.8.4 | 2.8.4 |
tensorflowPyPI | >= 2.9.0, < 2.9.3 | 2.9.3 |
tensorflow-cpuPyPI | >= 2.9.0, < 2.9.3 | 2.9.3 |
tensorflow-gpuPyPI | >= 2.9.0, < 2.9.3 | 2.9.3 |
Affected products
1- Range: >= 2.10.0, < 2.10.1
Patches
1b389f5c944caAdd true_classes input validation for candidate sampler ops.
2 files changed · +30 −0
tensorflow/core/kernels/candidate_sampler_ops.cc+8 −0 modified@@ -73,6 +73,14 @@ class BaseCandidateSamplerOp : public OpKernel { gtl::ArraySlice<int64_t> true_candidate( true_classes.matrix<int64_t>().data(), batch_size * num_true_); + + for (const auto& candidate : true_candidate) { + OP_REQUIRES(context, candidate >= 0 && candidate < sampler_->range(), + errors::InvalidArgument("`true_candidate` out of range [", 0, + ", ", sampler_->range(), + "), received ", candidate)); + } + gtl::MutableArraySlice<int64_t> sampled_candidate( out_sampled_candidates->vec<int64_t>().data(), num_sampled_); gtl::MutableArraySlice<float> true_expected_count(
tensorflow/python/kernel_tests/random/candidate_sampler_ops_test.py+22 −0 modified@@ -18,6 +18,7 @@ from tensorflow.python.framework import constant_op from tensorflow.python.framework import dtypes +from tensorflow.python.framework import errors from tensorflow.python.framework import test_util from tensorflow.python.ops import array_ops from tensorflow.python.ops import candidate_sampling_ops @@ -127,6 +128,27 @@ def draw(seed): # twice very rarely. self.assertLessEqual(num_same, 2) + def testCandidateOutOfRange(self): + with self.assertRaisesRegex((ValueError, errors.InvalidArgumentError), + "out of range"): + self.evaluate( + candidate_sampling_ops.log_uniform_candidate_sampler( + true_classes=[[0, 10]], + num_true=2, + num_sampled=1000, + unique=False, + range_max=2)) + + with self.assertRaisesRegex((ValueError, errors.InvalidArgumentError), + "out of range"): + self.evaluate( + candidate_sampling_ops.log_uniform_candidate_sampler( + true_classes=[[0, -10]], + num_true=2, + num_sampled=1000, + unique=False, + range_max=2)) + if __name__ == "__main__": test.main()
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
5- github.com/advisories/GHSA-8w5g-3wcv-9g2jghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2022-41880ghsaADVISORY
- github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/candidate_sampler_ops.ccghsaWEB
- github.com/tensorflow/tensorflow/commit/b389f5c944cadfdfe599b3f1e4026e036f30d2d4ghsaWEB
- github.com/tensorflow/tensorflow/security/advisories/GHSA-8w5g-3wcv-9g2jghsaWEB
News mentions
0No linked articles in our index yet.