CVE-2021-29515: Reference binding to null pointer in `MatrixDiag*` ops

Published May 14, 2021
·
Updated

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

16 affected componentsFixes available
pip/tensorflow-gpu>=2.4.0<2.4.2
2.4.2
pip/tensorflow-gpu>=2.3.0<2.3.3
2.3.3
pip/tensorflow-gpu>=2.2.0<2.2.3
2.2.3
pip/tensorflow-gpu<2.1.4
2.1.4
pip/tensorflow-cpu>=2.4.0<2.4.2
2.4.2
pip/tensorflow-cpu>=2.3.0<2.3.3
2.3.3
pip/tensorflow-cpu>=2.2.0<2.2.3
2.2.3
pip/tensorflow-cpu<2.1.4
2.1.4
pip/tensorflow>=2.4.0<2.4.2
2.4.2
pip/tensorflow>=2.3.0<2.3.3
2.3.3
pip/tensorflow>=2.2.0<2.2.3
2.2.3
pip/tensorflow<2.1.4
2.1.4
Google TensorFlow<2.1.4
Google TensorFlow>=2.2.0<2.2.3
Google TensorFlow>=2.3.0<2.3.3
Google TensorFlow>=2.4.0<2.4.2

Event History

May 14, 2021
CVE Published
via MITRE·07:36 PM
Data Sourced
via MITRE·07:36 PM
DescriptionSeverityWeakness
May 21, 2021
Advisory Published
via GitHub·02:20 PM

Frequently Asked Questions

1

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.

2

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.

3

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.

4

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.

5

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.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203