CVE-2021-41219: Undefined behavior via `nullptr` reference binding in sparse matrix multiplication
(updated )
The code for sparse matrix multiplication is vulnerable to undefined behavior via binding a reference to nullptr
:
import tensorflow as tf
tf.raw_ops.SparseMatMul(
a=[[1.0,1.0,1.0]],
b=[[],[],[]],
transpose_a=False,
transpose_b=False,
a_is_sparse=False,
b_is_sparse=True)
This occurs whenever the dimensions of a
or b
are 0 or less. In the case on one of these is 0, an empty output tensor should be allocated (to conserve the invariant that output tensors are always allocated when the operation is successful) but nothing should be written to it (that is, we should return early from the kernel implementation). Otherwise, attempts to write to this empty tensor would result in heap OOB access.
References
- github.com/advisories/GHSA-4f99-p9c2-3j8x
- github.com/pypa/advisory-database/tree/main/vulns/tensorflow-cpu/PYSEC-2021-628.yaml
- github.com/pypa/advisory-database/tree/main/vulns/tensorflow-gpu/PYSEC-2021-826.yaml
- github.com/pypa/advisory-database/tree/main/vulns/tensorflow/PYSEC-2021-411.yaml
- github.com/tensorflow/tensorflow
- github.com/tensorflow/tensorflow/commit/e6cf28c72ba2eb949ca950d834dd6d66bb01cfae
- github.com/tensorflow/tensorflow/security/advisories/GHSA-4f99-p9c2-3j8x
- nvd.nist.gov/vuln/detail/CVE-2021-41219
Detect and mitigate CVE-2021-41219 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →