CVE-2021-37677: Missing validation in shape inference for `Dequantize` in TensorFlow
Impact The shape inference code for tf.rawops.Dequantize has a vulnerability that could trigger a denial of service via a segfault if an attacker provides invalid arguments:
python import tensorflow as tf
tf.compat.v1.disablev2behavior() tf.rawops.Dequantize( inputtensor = tf.constant(-10.0, dtype=tf.float32), inputtensor = tf.cast(inputtensor, dtype=tf.quint8), minrange = tf.constant([], shape=[0], dtype=tf.float32), maxrange = tf.constant([], shape=[0], dtype=tf.float32), mode = 'MINCOMBINED', narrowrange=False, axis=-10, dtype=tf.dtypes.float32)
The shape inference implementation uses axis to select between two different values for minmaxrank which is then used to retrieve tensor dimensions. However, code assumes that axis can be either -1 or a value greater than -1, with no validation for the other values.
Patches We have patched the issue in GitHub commit da857cfa0fde8f79ad0afdbc94e88b5d4bbec764.
The fix will be included in TensorFlow 2.6.0. We will also cherrypick this commit on TensorFlow 2.5.1, TensorFlow 2.4.3, and TensorFlow 2.3.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 Yakun Zhang of Baidu Security.
Other sources
TensorFlow is an end-to-end open source platform for machine learning. In affected versions the shape inference code for tf.rawops.Dequantize has a vulnerability that could trigger a denial of service via a segfault if an attacker provides invalid arguments. The shape inference implementation uses axis to select between two different values for minmaxrank which is then used to retrieve tensor dimensions. However, code assumes that axis can be either -1 or a value greater than -1, with no validation for the other values. We have patched the issue in GitHub commit da857cfa0fde8f79ad0afdbc94e88b5d4bbec764. The fix will be included in TensorFlow 2.6.0. We will also cherrypick this commit on TensorFlow 2.5.1, TensorFlow 2.4.3, and TensorFlow 2.3.4, as these are also affected and still in supported range.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
pip/tensorflow-gputo a version that resolves this vulnerability.Fixed in 2.5.1 - Upgrade
Upgrade
pip/tensorflow-gputo a version that resolves this vulnerability.Fixed in 2.4.3 - Upgrade
Upgrade
pip/tensorflow-gputo a version that resolves this vulnerability.Fixed in 2.3.4 - Upgrade
Upgrade
pip/tensorflow-cputo a version that resolves this vulnerability.Fixed in 2.5.1 - Upgrade
Upgrade
pip/tensorflow-cputo a version that resolves this vulnerability.Fixed in 2.4.3 - Upgrade
Upgrade
pip/tensorflow-cputo a version that resolves this vulnerability.Fixed in 2.3.4 - Upgrade
Upgrade
pip/tensorflowto a version that resolves this vulnerability.Fixed in 2.5.1 - Upgrade
Upgrade
pip/tensorflowto a version that resolves this vulnerability.Fixed in 2.4.3 - Upgrade
Upgrade
pip/tensorflowto a version that resolves this vulnerability.Fixed in 2.3.4 - Upgrade
Upgrade
tensorflowto a version that resolves this vulnerability.Fixed in 2.6.0Patch da857cfa0fde8f79ad0afdbc94e88b5d4bbec764 - Upgrade
Upgrade
tensorflowto a version that resolves this vulnerability.Fixed in 2.5.1Patch da857cfa0fde8f79ad0afdbc94e88b5d4bbec764 - Upgrade
Upgrade
tensorflowto a version that resolves this vulnerability.Fixed in 2.4.3Patch da857cfa0fde8f79ad0afdbc94e88b5d4bbec764 - Upgrade
Upgrade
tensorflowto a version that resolves this vulnerability.Fixed in 2.3.4Patch da857cfa0fde8f79ad0afdbc94e88b5d4bbec764
Event History
Frequently Asked Questions
What is the severity of CVE-2021-37677?
CVE-2021-37677 has a high severity rating due to its potential to cause denial of service via a segmentation fault.
How do I fix CVE-2021-37677?
To mitigate CVE-2021-37677, upgrade TensorFlow to version 2.5.1 or later.
Which versions of TensorFlow are affected by CVE-2021-37677?
CVE-2021-37677 affects TensorFlow versions from 2.3.0 up to but not including 2.3.4, 2.4.0 up to but not including 2.4.3, and specifically includes 2.5.0 and certain release candidates of 2.6.0.
Is CVE-2021-37677 a remote attack vulnerability?
CVE-2021-37677 can be exploited by an attacker who can send crafted inputs to the vulnerable TensorFlow operations.
What are the implications of CVE-2021-37677?
CVE-2021-37677 can lead to application crashes, resulting in interrupted service and potential downtime.