GitHub Advisoryadvisory · PyPI
GHSA-prcg-wp5q-rv7p Crashes due to overflow and `CHECK`-fail in ops with large tensor shapes
MEDIUM
Official page ↗
- Aliases
- CVE-2021-41197
- Ecosystem
- PyPI
- Packages
- tensorflow, tensorflow-cpu, tensorflow-gpu
- Severity
- Moderate
- CVSS vector
- CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
- Weaknesses
- CWE-190
- Reviewed
- 2021-11-08
Affected packages
• PyPI tensorflow: >= 2.6.0, < 2.6.1 → fixed in 2.6.1
• PyPI tensorflow: >= 2.5.0, < 2.5.2 → fixed in 2.5.2
• PyPI tensorflow: < 2.4.4 → fixed in 2.4.4
• PyPI tensorflow-cpu: >= 2.6.0, < 2.6.1 → fixed in 2.6.1
• PyPI tensorflow-cpu: >= 2.5.0, < 2.5.2 → fixed in 2.5.2
• PyPI tensorflow-cpu: < 2.4.4 → fixed in 2.4.4
• PyPI tensorflow-gpu: >= 2.6.0, < 2.6.1 → fixed in 2.6.1
• PyPI tensorflow-gpu: >= 2.5.0, < 2.5.2 → fixed in 2.5.2
• PyPI tensorflow-gpu: < 2.4.4 → fixed in 2.4.4
Description
Impact
TensorFlow allows tensor to have a large number of dimensions and each dimension can be as large as desired. However, the total number of elements in a tensor must fit within an `int64_t`. If an overflow occurs, `MultiplyWithoutOverflow` would return a negative result. In the majority of TensorFlow codebase this then results in a `CHECK`-failure. Newer constructs exist which return a `Status` instead of crashing the binary.
For example `AddDim` calls should be replaced by `AddDimWithStatus`.
This is similar to CVE-2021-29584 (and similar other reported vulnerabilities in TensorFlow, localized to specific APIs).
Patches
We have patched the issue in GitHub commits 7c1692bd417eb4f9b33ead749a41166d6080af85 (merging #51732), d81b1351da3e8c884ff836b64458d94e4a157c15 (merging #51717), a871989d7b6c18cdebf2fb4f0e5c5b62fbc19edf (merging #51658), and d81b1351da3e8c884ff836b64458d94e4a157c15 (merging #51973). It is possible that other similar instances exist in TensorFlow, we will issue fixes as these are discovered.
The fix will be included in TensorFlow 2.7.0. We will also cherrypick this commit on TensorFlow 2.6.1, TensorFlow 2.5.2, and TensorFlow 2.4.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 externally via GitHub issue, GitHub issue and GitHub issue.
Related
Alias · CVE (1)
- CVE-2021-41197 TensorFlow is an open source platform for machine learning. vulnerability
Weakness · CWE (1)
- CWE-190 Integer Overflow or Wraparound weakness
References
- https://github.com/tensorflow/tensorflow/security/advisories/GHSA-prcg-wp5q-rv7p web
- https://nvd.nist.gov/vuln/detail/CVE-2021-41197 advisory
- https://github.com/tensorflow/tensorflow/issues/46890 web
- https://github.com/tensorflow/tensorflow/issues/51908 web
- https://github.com/tensorflow/tensorflow/commit/7c1692bd417eb4f9b33ead749a41166d6080af85 web
- https://github.com/tensorflow/tensorflow/commit/a871989d7b6c18cdebf2fb4f0e5c5b62fbc19edf web
- https://github.com/tensorflow/tensorflow/commit/d81b1351da3e8c884ff836b64458d94e4a157c15 web
- https://github.com/pypa/advisory-database/tree/main/vulns/tensorflow-cpu/PYSEC-2021-607.yaml web
- https://github.com/pypa/advisory-database/tree/main/vulns/tensorflow-gpu/PYSEC-2021-805.yaml web
- https://github.com/pypa/advisory-database/tree/main/vulns/tensorflow/PYSEC-2021-390.yaml web
- https://github.com/tensorflow/tensorflow package