What’s Vulnerable › Vulnerabilities
CVE-2021-29512: Heap buffer overflow in `RaggedBinCount`
- Severity: high (CVSS 7.8 v3.1)
- Exploited in the wild: not listed in CISA KEV
- EPSS: 0.2% probability of exploitation in the next 30 days
- Public exploit or detection template: yes
- Published: 2021-05-14 · updated 2026-06-17
- Weakness: CWE-120
Description
TensorFlow is an end-to-end open source platform for machine learning. If the `splits` argument of `RaggedBincount` does not specify a valid `SparseTensor`(https://www.tensorflow.org/api_docs/python/tf/sparse/SparseTensor), then an attacker can trigger a heap buffer overflow. This will cause a read from outside the bounds of the `splits` tensor buffer in the implementation of the `RaggedBincount` op(https://github.com/tensorflow/tensorflow/blob/8b677d79167799f71c42fd3fa074476e0295413a/tensorflow/core/kernels/bincount_op.cc#L430-L433). Before the `for` loop, `batch_idx` is set to 0. The user controls the `splits` array, making it contain only one element, 0. Thus, the code in the `while` loop would increment `batch_idx` and then try to read `splits(1)`, which is outside of bounds. The fix will be included in TensorFlow 2.5.0. We will also cherrypick this commit on TensorFlow 2.4.2 and TensorFlow 2.3.3, as these are also affected.
Affected products
- tensorflow: from 2.3.0 before 2.3.3; from 2.4.0 before 2.4.2 — fixed in 2.3.3, 2.4.2
How to fix
Upgrade to a fixed version: tensorflow 2.3.3, 2.4.2. Check the vendor advisory for mitigations.
References
- https://github.com/tensorflow/tensorflow/commit/eebb96c2830d48597d055d247c0e9aebaea94cd5
- https://github.com/tensorflow/tensorflow/security/advisories/GHSA-4278-2v5v-65r4
- https://github.com/tensorflow/tensorflow/commit/eebb96c2830d48597d055d247c0e9aebaea94cd5
- https://github.com/tensorflow/tensorflow/security/advisories/GHSA-4278-2v5v-65r4
Get alerted when CVE-2021-29512 or the next vulnerability affects your stack