GitHub Advisoryadvisory · PyPI
GHSA-7cqx-92hp-x6wh Heap buffer overflow in `MaxPool3DGradGrad`
LOW
Official page ↗
- Aliases
- CVE-2021-29576
- Ecosystem
- PyPI
- Packages
- tensorflow, tensorflow-cpu, tensorflow-gpu
- Severity
- Low
- CVSS vector
- CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:L
- Weaknesses
- CWE-119, CWE-787
- Reviewed
- 2021-05-18
Affected packages
• PyPI tensorflow: < 2.1.4 → fixed in 2.1.4
• PyPI tensorflow: >= 2.2.0, < 2.2.3 → fixed in 2.2.3
• PyPI tensorflow: >= 2.3.0, < 2.3.3 → fixed in 2.3.3
• PyPI tensorflow: >= 2.4.0, < 2.4.2 → fixed in 2.4.2
• PyPI tensorflow-cpu: < 2.1.4 → fixed in 2.1.4
• PyPI tensorflow-cpu: >= 2.2.0, < 2.2.3 → fixed in 2.2.3
• PyPI tensorflow-cpu: >= 2.3.0, < 2.3.3 → fixed in 2.3.3
• PyPI tensorflow-cpu: >= 2.4.0, < 2.4.2 → fixed in 2.4.2
• PyPI tensorflow-gpu: < 2.1.4 → fixed in 2.1.4
• PyPI tensorflow-gpu: >= 2.2.0, < 2.2.3 → fixed in 2.2.3
• PyPI tensorflow-gpu: >= 2.3.0, < 2.3.3 → fixed in 2.3.3
• PyPI tensorflow-gpu: >= 2.4.0, < 2.4.2 → fixed in 2.4.2
Description
Impact
The implementation of `tf.raw_ops.MaxPool3DGradGrad` is vulnerable to a heap buffer overflow:
```python
import tensorflow as tf
values = [0.01] * 11
orig_input = tf.constant(values, shape=[11, 1, 1, 1, 1], dtype=tf.float32)
orig_output = tf.constant([0.01], shape=[1, 1, 1, 1, 1], dtype=tf.float32)
grad = tf.constant([0.01], shape=[1, 1, 1, 1, 1], dtype=tf.float32)
ksize = [1, 1, 1, 1, 1]
strides = [1, 1, 1, 1, 1]
padding = "SAME"
tf.raw_ops.MaxPool3DGradGrad(
orig_input=orig_input, orig_output=orig_output, grad=grad, ksize=ksize,
strides=strides, padding=padding)
```
The implementation does not check that the initialization of `Pool3dParameters` completes successfully:
```cc
Pool3dParameters params{context, ksize_, stride_,
padding_, data_format_, tensor_in.shape()};
```
Since the constructor uses `OP_REQUIRES` to validate conditions, the first assertion that fails interrupts the initialization of `params`, making it contain invalid data. In turn, this might cause a heap buffer overflow, depending on default initialized values.
Patches
We have patched the issue in GitHub commit 63c6a29d0f2d692b247f7bf81f8732d6442fad09.
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.
For more information
Please consult our security guide for more information regarding the security model and how to contact us with issues and questions.
Attribution
This vulnerability has been reported by Ying Wang and Yakun Zhang of Baidu X-Team.
Related
Alias · CVE (1)
- CVE-2021-29576 TensorFlow is an end-to-end open source platform for machine learning. vulnerability
References
- https://github.com/tensorflow/tensorflow/security/advisories/GHSA-7cqx-92hp-x6wh web
- https://nvd.nist.gov/vuln/detail/CVE-2021-29576 advisory
- https://github.com/tensorflow/tensorflow/commit/63c6a29d0f2d692b247f7bf81f8732d6442fad09 web
- https://github.com/pypa/advisory-database/tree/main/vulns/tensorflow-cpu/PYSEC-2021-504.yaml web
- https://github.com/pypa/advisory-database/tree/main/vulns/tensorflow-gpu/PYSEC-2021-702.yaml web
- https://github.com/pypa/advisory-database/tree/main/vulns/tensorflow/PYSEC-2021-213.yaml web
- https://github.com/tensorflow/tensorflow package