CVE-2021-29515: Reference binding to null pointer in `MatrixDiag*` ops
Impact The implementation of MatrixDiag operations does not validate that the tensor arguments are non-empty:
cc numrows = context->input(2).flat<int32>()(0); numcols = context->input(3).flat<int32>()(0); paddingvalue = context->input(4).flat<T>()(0);
Thus, users can trigger null pointer dereferences if any of the above tensors are null:
python import tensorflow as tf
d = tf.converttotensor([],dtype=tf.float32) p = tf.converttotensor([],dtype=tf.float32) tf.rawops.MatrixDiagV2(diagonal=d, k=0, numrows=0, numcols=0, paddingvalue=p)
Changing from tf.rawops.MatrixDiagV2 to tf.rawops.MatrixDiagV3 still reproduces the issue.
Patches We have patched the issue in GitHub commit a7116dd3913c4a4afd2a3a938573aa7c785fdfc6.
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 Ye Zhang and Yakun Zhang of Baidu X-Team.
Other sources
TensorFlow is an end-to-end open source platform for machine learning. The implementation of MatrixDiag operations(https://github.com/tensorflow/tensorflow/blob/4c4f420e68f1cfaf8f4b6e8e3eb857e9e4c3ff33/tensorflow/core/kernels/linalg/matrixdiagop.cc#L195-L197) does not validate that the tensor arguments are non-empty. 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.
Affected Software
Remediation
Event History
Frequently Asked Questions
What is the severity of CVE-2021-29515?
CVE-2021-29515 is considered a medium severity vulnerability due to its potential to cause runtime errors in certain operations.
How does CVE-2021-29515 affect TensorFlow users?
CVE-2021-29515 affects TensorFlow users by allowing non-validation of empty tensor arguments during certain matrix operations, potentially leading to unexpected behavior.
How do I fix CVE-2021-29515?
To fix CVE-2021-29515, upgrade to TensorFlow version 2.1.4 or later, or ensure that you are using versions 2.2.0 through 2.4.2.
What are the affected versions for CVE-2021-29515?
CVE-2021-29515 impacts TensorFlow versions 2.2.0 through 2.4.2, specifically 2.1.4, 2.2.3, 2.3.3, and 2.4.2.
Is CVE-2021-29515 a critical vulnerability?
No, CVE-2021-29515 is not classified as a critical vulnerability but should still be addressed due to the potential impact on application stability.