CVE-2020-15196: Heap buffer overflow in Tensorflow
(updated )
The SparseCountSparseOutput
and RaggedCountSparseOutput
implementations don’t validate that the weights
tensor has the same shape as the data. The check exists for DenseCountSparseOutput
, where both tensors are fully specified:
https://github.com/tensorflow/tensorflow/blob/0e68f4d3295eb0281a517c3662f6698992b7b2cf/tensorflow/core/kernels/count_ops.cc#L110-L117
In the sparse and ragged count weights are still accessed in parallel with the data: https://github.com/tensorflow/tensorflow/blob/0e68f4d3295eb0281a517c3662f6698992b7b2cf/tensorflow/core/kernels/count_ops.cc#L199-L201
But, since there is no validation, a user passing fewer weights than the values for the tensors can generate a read from outside the bounds of the heap buffer allocated for the weights.
References
- github.com/advisories/GHSA-pg59-2f92-5cph
- github.com/pypa/advisory-database/tree/main/vulns/tensorflow-cpu/PYSEC-2020-276.yaml
- github.com/pypa/advisory-database/tree/main/vulns/tensorflow-gpu/PYSEC-2020-311.yaml
- github.com/pypa/advisory-database/tree/main/vulns/tensorflow/PYSEC-2020-119.yaml
- github.com/tensorflow/tensorflow
- github.com/tensorflow/tensorflow/commit/3cbb917b4714766030b28eba9fb41bb97ce9ee02
- github.com/tensorflow/tensorflow/releases/tag/v2.3.1
- github.com/tensorflow/tensorflow/security/advisories/GHSA-pg59-2f92-5cph
- nvd.nist.gov/vuln/detail/CVE-2020-15196
Detect and mitigate CVE-2020-15196 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 →