Skip to content

Undefined behavior in `SparseTensorSliceDataset`

High severity GitHub Reviewed Published Feb 2, 2022 in tensorflow/tensorflow • Updated Feb 3, 2023

Package

pip tensorflow (pip)

Affected versions

< 2.5.3
>= 2.6.0, < 2.6.3
= 2.7.0

Patched versions

2.5.3
2.6.3
2.7.1
pip tensorflow-cpu (pip)
< 2.5.3
>= 2.6.0, < 2.6.3
= 2.7.0
2.5.3
2.6.3
2.7.1
pip tensorflow-gpu (pip)
< 2.5.3
>= 2.6.0, < 2.6.3
= 2.7.0
2.5.3
2.6.3
2.7.1

Description

Impact

The implementation of SparseTensorSliceDataset has an undefined behavior: under certain condition it can be made to dereference a nullptr value:

import tensorflow as tf
import numpy as np

tf.raw_ops.SparseTensorSliceDataset(
  indices=[[]],
  values=[],
  dense_shape=[1,1])

The 3 input arguments represent a sparse tensor. However, there are some preconditions that these arguments must satisfy but these are not validated in the implementation.

Patches

We have patched the issue in GitHub commit 965b97e4a9650495cda5a8c210ef6684b4b9eceb.

The fix will be included in TensorFlow 2.8.0. We will also cherrypick this commit on TensorFlow 2.7.1, TensorFlow 2.6.3, and TensorFlow 2.5.3, 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 Faysal Hossain Shezan from University of Virginia.

References

@mihaimaruseac mihaimaruseac published to tensorflow/tensorflow Feb 2, 2022
Published by the National Vulnerability Database Feb 3, 2022
Reviewed Feb 3, 2022
Published to the GitHub Advisory Database Feb 9, 2022
Last updated Feb 3, 2023

Severity

High
7.6
/ 10

CVSS base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
Low
User interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
Low
Availability
High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:H

Weaknesses

CVE ID

CVE-2022-21736

GHSA ID

GHSA-pfjj-m3jj-9jc9

Source code

Loading Checking history
See something to contribute? Suggest improvements for this vulnerability.