QID 982517
QID 982517: Python (pip) Security Update for tensorflow-gpu (GHSA-3qxp-qjq7-w4hf)
Security update has been released for tensorflow,tensorflow-cpu,tensorflow-gpu to fix the vulnerability.
Note: The preceding description block is extracted directly from the security advisory. Using automation, we have attempted to clean and format it as much as possible without introducing additional issues.
An attacker can trigger a `CHECK` fail in PNG encoding by providing an empty input tensor as the pixel data:
```python
import tensorflow as tf
image = tf.zeros([0, 0, 3])
image = tf.cast(image, dtype=tf.uint8)
tf.raw_ops.EncodePng(image=image)
```
This is because the [implementation](https://github.com/tensorflow/tensorflow/blob/e312e0791ce486a80c9d23110841525c6f7c3289/tensorflow/core/kernels/image/encode_png_op.cc#L57-L60) only validates that the total number of pixels in the image does not overflow. Thus, an attacker can send an empty matrix for encoding. However, if the tensor is empty, then the associated buffer is `nullptr`. Hence, when [calling `png::WriteImageToBuffer`](https://github.com/tensorflow/tensorflow/blob/e312e0791ce486a80c9d23110841525c6f7c3289/tensorflow/core/kernels/image/encode_png_op.cc#L79-L93), the first argument (i.e., `image.flat<T>().data()`) is `NULL`. This then triggers the `CHECK_NOTNULL` in the [first line of `png::WriteImageToBuffer`](https://github.com/tensorflow/tensorflow/blob/e312e0791ce486a80c9d23110841525c6f7c3289/tensorflow/core/lib/png/png_io.cc#L345-L349).
```cc
template <typename T>
bool WriteImageToBuffer(
const void* image, int width, int height, int row_bytes, int num_channels,
int channel_bits, int compression, T* png_string,
const std::vector<std::pair<std::string, std::string> >* metadata) {
CHECK_NOTNULL(image);
...
}
```
Since `image` is null, this results in `abort` being called after printing the stacktrace. Effectively, this allows an attacker to mount a denial of service attack.
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.
- GHSA-3qxp-qjq7-w4hf -
github.com/advisories/GHSA-3qxp-qjq7-w4hf
CVEs related to QID 982517
| Advisory ID | Software | Component | Link |
|---|---|---|---|
| GHSA-3qxp-qjq7-w4hf | tensorflow |
|
|
| GHSA-3qxp-qjq7-w4hf | tensorflow-cpu |
|
|
| GHSA-3qxp-qjq7-w4hf | tensorflow-gpu |
|