CVE-2021-37678 json
Arbitrary code execution due to YAML deserialization
published 2021-08-12 5 y ago modified 2026-09-10 1 mo ago also BIT-tensorflow-2021-37678 , EUVD-2021-0404 , GHSA-r6jx-9g48-2r5r , PYSEC-2021-300 , PYSEC-2021-591 , PYSEC-2021-789
- cvss
- 9.3
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.4%
- EPSS 0.4% chance of exploitation in 30 days, percentile 39%
- public exploits
- 0
- none known
Summary
TensorFlow is an end-to-end open source platform for machine learning. In affected versions TensorFlow and Keras can be tricked to perform arbitrary code execution when deserializing a Keras model from YAML format. The [implementation](https://github.com/tensorflow/tensorflow/blob/460e000de3a83278fb00b61a16d161b1964f15f4/tensorflow/python/keras/saving/model_config.py#L66-L104) uses `yaml.unsafe_load` which can perform arbitrary code execution on the input. Given that YAML format support requires a significant amount of work, we have removed it for now. We have patched the issue in GitHub commit 23d6383eb6c14084a8fc3bdf164043b974818012. The fix will be included in TensorFlow 2.6.0. We will also cherrypick this commit on TensorFlow 2.5.1, TensorFlow 2.4.3, and TensorFlow 2.3.4, as these are also affected and still in supported range.
Patch / fix
- pypi tensorflow 2.3.4, 2.4.3, 2.5.1
- pypi tensorflow-cpu 2.3.4, 2.4.3, 2.5.1
- pypi tensorflow-gpu 2.3.4, 2.4.3, 2.5.1
- bitnami tensorflow 2.3.4, 2.4.3, 2.5.1
- google tensorflow 2.3.4, 2.4.3
- tensorflow2 Package Hub 15 SP3, openSUSE Leap 15.3 2.6.0-bp153.2.3.1
- bazel3.7 Package Hub 15 SP3, openSUSE Leap 15.3 3.7.2-bp153.4.1
- tensorflow2-lite Package Hub 15 SP3, openSUSE Leap 15.3 2.6.0-bp153.2.3.1
- bazel-skylib1.0.3 Package Hub 15 SP3, openSUSE Leap 15.3 1.0.3-bp153.2.1
- tensorflow2_2_6_0-gnu-hpc Package Hub 15 SP3, openSUSE Leap 15.3 2.6.0-bp153.2.3.1
- tensorflow2_2_6_0-gnu-openmpi2-hpc Package Hub 15 SP3, openSUSE Leap 15.3 2.6.0-bp153.2.3.1
opensuse advisories openSUSE-SU-2022:10014-1
- tensorflow Arch Linux 2.5.1-1
arch linux advisories AVG-2292
Exploit prediction
0.45% chance of exploitation in the next 30 days, higher than 39% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 9.3 | CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| GitHub | 3.1 | 9.3 | CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| NVD | 3.1 | 8.8 | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H |
| NVD | 2.0 | 4.6 | AV:L/AC:L/Au:N/C:P/I:P/A:P |
| OSV | 3.1 | 9.3 | CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | tensorflow | <2.3.4 >=2.4.0, <2.4.3 >=2.5.0, <2.5.1 >=2.3.0, <2.3.4 |
2.3.4 2.4.3 2.5.1 |
| pypi | tensorflow-cpu | <2.3.4 >=2.4.0, <2.4.3 >=2.5.0, <2.5.1 >=2.3.0, <2.3.4 |
2.3.4 2.4.3 2.5.1 |
| pypi | tensorflow-gpu | <2.3.4 >=2.4.0, <2.4.3 >=2.5.0, <2.5.1 >=2.3.0, <2.3.4 |
2.3.4 2.4.3 2.5.1 |
| bitnami | tensorflow | >=2.3.0, <2.3.4 >=2.4.0, <2.4.3 >=2.5.0, <2.5.1 |
2.3.4 2.4.3 2.5.1 |
Affected products
- tensorflow tensorflow
Classification
- Weakness
-
- CWE-502 Deserialization of Untrusted Data
References
-
github.com
/tensorflow/tensorflow/commit/23d6383eb6c14084a8fc3bdf164043b974818012
web, patch, third-party-advisory, advisory
-
github.com
/tensorflow/tensorflow/commit/1df5a69e9f1a18a937e7907223066e606bf466b9
web
-
github.com
/tensorflow/tensorflow/commit/8e47a685785bef8f81bcb996048921dfde08a9ab
web
-
github.com
/tensorflow/tensorflow/commit/a09ab4e77afdcc6e1e045c9d41d5edab63aafc1a
web
-
github.com
/tensorflow/tensorflow/security/advisories/GHSA-r6jx-9g48-2r5r
web, third-party-advisory, advisory
-
nvd.nist.gov
/vuln/detail/CVE-2021-37678
advisory, web
-
github.com
/pypa/advisory-database/tree/main/vulns/tensorflow-cpu/PYSEC-2021-591.yaml
web
-
github.com
/pypa/advisory-database/tree/main/vulns/tensorflow-gpu/PYSEC-2021-789.yaml
web
-
github.com
/pypa/advisory-database/tree/main/vulns/tensorflow/PYSEC-2021-300.yaml
web
-
github.com
/tensorflow/tensorflow
package
Sources
- CVE List CVE-2021-37678
- GitHub Advisory GHSA-r6jx-9g48-2r5r
- NVD CVE-2021-37678
- OSV BIT-tensorflow-2021-37678
- OSV PYSEC-2021-300
- OSV PYSEC-2021-591
- OSV PYSEC-2021-789
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.