CVE-2021-29612: google tensorflow Classic Buffer Overflow
Vulnerability summary
CVE-2021-29612 is a high (CVSS 7.8) Classic Buffer Overflow vulnerability in google tensorflow. EPSS estimates a 0.29% chance of exploitation in the next 30 days, higher than 19.9% of scored vulnerabilities. 1 public exploit is recorded.
Timeline
- 14-05-2021PublishedVulnerability first disclosed.
- 03-08-2024Last modifiedVulnerability information updated.
Description
TensorFlow is an end-to-end open source platform for machine learning. An attacker can trigger a heap buffer overflow in Eigen implementation of `tf.raw_ops.BandedTriangularSolve`. The implementation(https://github.com/tensorflow/tensorflow/blob/eccb7ec454e6617738554a255d77f08e60ee0808/tensorflow/core/kernels/linalg/banded_triangular_solve_op.cc#L269-L278) calls `ValidateInputTensors` for input validation but fails to validate that the two tensors are not empty. Furthermore, since `OP_REQUIRES` macro only stops execution of current function after setting `ctx->status()` to a non-OK value, callers of helper functions that use `OP_REQUIRES` must check value of `ctx->status()` before continuing. This doesn't happen in this op's implementation(https://github.com/tensorflow/tensorflow/blob/eccb7ec454e6617738554a255d77f08e60ee0808/tensorflow/core/kernels/linalg/banded_triangular_solve_op.cc#L219), hence the validation that is present is also not effective. The fix will be included in TensorFlow 2.5.0. We will also cherrypick this commit on TensorFlow 2.4.2, TensorFlow 2.3.3, TensorFlow 2.2.3 and TensorFlow 2.1.4, as these are also affected and still in supported range.
CVSS metrics
5 scores · 3 sources · 3 versions- CVE.orgCNA3.6LowCVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:LDiffers
- OSV · PypiEcosystem advisory · calculated3.6LowCVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:LDiffers
EPSS trend
Probability
0.29%
Chance of exploitation in the next 30 days
Percentile
20%
Versus all other CVEs
30-day change
0.00 pp
From 0.29% on 20-09-2026
Known exploited
Compare KEV catalogsNot in any of the 3 tracked catalogs.
Public exploits
1 foundTensorflow
Maturity: poc
Weaknesses
CWE · root cause- CWE-120Buffer Copy without Checking Size of Input ('Classic Buffer Overflow')The product copies an input buffer to an output buffer without verifying that the size of the input buffer is less than the size of the output buffer.
- CWE-787Out-of-bounds WriteThe product writes data past the end, or before the beginning, of the intended buffer.
Affected systems
PyPI3 products
- tensorflow< 2.1.4 | ≥ 2.2.0, < 2.2.3 | ≥ 2.3.0, < 2.3.3 | < 0ab290774f91a23bebe30a358fde4e53ab4876a0 | ≥ 2.4.0, < 2.4.2
- tensorflow-cpu< 2.1.4 | ≥ 2.2.0, < 2.2.3 | ≥ 2.3.0, < 2.3.3 | < 0ab290774f91a23bebe30a358fde4e53ab4876a0 | ≥ 2.4.0, < 2.4.2
- tensorflow-gpu< 2.1.4 | ≥ 2.2.0, < 2.2.3 | ≥ 2.3.0, < 2.3.3 | < 0ab290774f91a23bebe30a358fde4e53ab4876a0 | ≥ 2.4.0, < 2.4.2
Google1 product
- tensorflow< 2.1.4 | ≥ 2.2.0, < 2.2.3 | ≥ 2.3.0, < 2.3.3 | ≥ 2.4.0, < 2.4.2
Tensorflow1 product
- tensorflow< 2.1.4 | ≥ 2.2.0, < 2.2.3 | ≥ 2.3.0, < 2.3.3 | ≥ 2.4.0, < 2.4.2
3 vendors · 5 products
References
7 links- github.com/tensorflow/tensorflow/security/advisories/GHSA-2xgj-xhgf-ggjvX Refsource CONFIRMWEBAdvisoryExploitPatchThird Party Advisory
- github.com/tensorflow/tensorflow/commit/0ab290774f91a23bebe30a358fde4e53ab4876a0X Refsource MISCWEBFIXPatchThird Party Advisory
- github.com/tensorflow/tensorflow/commit/ba6822bd7b7324ba201a28b2f278c29a98edbef2X Refsource MISCWEBFIXPatchThird Party Advisory