CVE-2022-21731 json
Type confusion leading to segfault in Tensorflow
published 2022-02-03 4 y ago modified 2026-09-10 1 mo ago also BIT-tensorflow-2022-21731 , EUVD-2022-0294 , GHSA-m4hf-j54p-p353 , PYSEC-2022-110 , PYSEC-2022-55 , PYSEC-2026-3211
- cvss
- 6.5
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.9%
- EPSS 0.9% chance of exploitation in 30 days, percentile 58%
- public exploits
- 0
- none known
Summary
Tensorflow is an Open Source Machine Learning Framework. The implementation of shape inference for `ConcatV2` can be used to trigger a denial of service attack via a segfault caused by a type confusion. The `axis` argument is translated into `concat_dim` in the `ConcatShapeHelper` helper function. Then, a value for `min_rank` is computed based on `concat_dim`. This is then used to validate that the `values` tensor has at least the required rank. However, `WithRankAtLeast` receives the lower bound as a 64-bits value and then compares it against the maximum 32-bits integer value that could be represented. Due to the fact that `min_rank` is a 32-bits value and the value of `axis`, the `rank` argument is a negative value, so the error check is bypassed. The fix will be included in TensorFlow 2.8.0. We will also cherrypick this commit on TensorFlow 2.7.1, TensorFlow 2.6.3, and TensorFlow 2.5.3, as these are also affected and still in supported range.
Patch / fix
- pypi tensorflow 2.5.3, 2.6.3, 2.7.1
- pypi tensorflow-cpu 2.5.3, 2.6.3, 2.7.1
- pypi tensorflow-gpu 2.5.3, 2.6.3, 2.7.1
- bitnami tensorflow 2.5.3, 2.6.3, 2.7.1
CISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- no
- Technical impact
- partial
- Assessed
- 18 mo ago
Exploit prediction
0.85% chance of exploitation in the next 30 days, higher than 58% of all scored CVEs (FIRST EPSS, 2026-11-08).
Exploits and checks
- github.com https://github.com/tensorflow/tensorflow/blob/5100e359aef5c8021f2e71c7b986420b85ce7b3d/tensorflow/core/framework/common_shape_fns.cc#L1961-L2059 referenced PoC, tagged "exploit" by a source, unverified
- github.com https://github.com/tensorflow/tensorflow/blob/5100e359aef5c8021f2e71c7b986420b85ce7b3d/tensorflow/core/framework/shape_inference.cc#L345-L358 referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 6.5 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |
| GitHub | 3.1 | 6.5 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |
| NVD | 3.1 | 6.5 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |
| NVD | 2.0 | 4.0 | AV:N/AC:L/Au:S/C:N/I:N/A:P |
| OSV | 3.1 | 6.5 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | tensorflow | <2.5.3 >=2.6.0, <2.6.3 >=2.7.0, <2.7.1 |
2.5.3 2.6.3 2.7.1 |
| pypi | tensorflow-cpu | <2.5.3 >=2.6.0, <2.6.3 >=2.7.0, <2.7.1 |
2.5.3 2.6.3 2.7.1 |
| pypi | tensorflow-gpu | <2.5.3 >=2.6.0, <2.6.3 >=2.7.0, <2.7.1 |
2.5.3 2.6.3 2.7.1 |
| bitnami | tensorflow | <2.5.3 >=2.6.0, <2.6.3 >=2.7.0, <2.7.1 |
2.5.3 2.6.3 2.7.1 |
Classification
References
-
github.com
/tensorflow/tensorflow/commit/08d7b00c0a5a20926363849f611729f53f3ec022
web, patch, third-party-advisory, advisory
-
github.com
/tensorflow/tensorflow/security/advisories/GHSA-m4hf-j54p-p353
web, patch, third-party-advisory, advisory
-
github.com
/tensorflow/tensorflow/blob/5100e359aef5c8021f2e71c7b986420b85ce7b3d/tensorflow/core/framework/common_shape_fn
web, exploit, third-party-advisory, advisory
-
github.com
/tensorflow/tensorflow/blob/5100e359aef5c8021f2e71c7b986420b85ce7b3d/tensorflow/core/framework/shape_inference
web, exploit, third-party-advisory, advisory
-
nvd.nist.gov
/vuln/detail/CVE-2022-21731
advisory, web
-
github.com
/pypa/advisory-database/tree/main/vulns/tensorflow-cpu/PYSEC-2022-55.yaml
web
-
github.com
/pypa/advisory-database/tree/main/vulns/tensorflow-gpu/PYSEC-2022-110.yaml
web
-
github.com
/tensorflow/tensorflow
web
-
pypi.org
/project/tensorflow
package
-
github.com
/advisories/GHSA-m4hf-j54p-p353
advisory
Sources
- CVE List CVE-2022-21731
- GitHub Advisory GHSA-m4hf-j54p-p353
- NVD CVE-2022-21731
- OSV BIT-tensorflow-2022-21731
- OSV PYSEC-2022-110
- OSV PYSEC-2022-55
- OSV PYSEC-2026-3211
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.