GitHub Advisoryadvisory · PyPI
GHSA-h67m-xg8f-fxcf Deadlock in mutually recursive `tf.function` objects
MEDIUM
Official page ↗
- Aliases
- CVE-2021-41213
- 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-662, CWE-667
- 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
The code behind `tf.function` API can be made to deadlock when two `tf.function` decorated Python functions are mutually recursive:
```python
import tensorflow as tf
@tf.function()
def fun1(num):
if num == 1:
return
print(num)
fun2(num-1)
@tf.function()
def fun2(num):
if num == 0:
return
print(num)
fun1(num-1)
fun1(9)
```
This occurs due to using a non-reentrant `Lock` Python object.
Loading any model which contains mutually recursive functions is vulnerable. An attacker can cause denial of service by causing users to load such models and calling a recursive `tf.function`, although this is not a frequent scenario.
Patches
We have patched the issue in GitHub commit afac8158d43691661ad083f6dd9e56f327c1dcb7.
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 by members of the Aivul Team from Qihoo 360.
Related
Alias · CVE (1)
- CVE-2021-41213 TensorFlow is an open source platform for machine learning. vulnerability
References
- https://github.com/tensorflow/tensorflow/security/advisories/GHSA-h67m-xg8f-fxcf web
- https://nvd.nist.gov/vuln/detail/CVE-2021-41213 advisory
- https://github.com/tensorflow/tensorflow/commit/afac8158d43691661ad083f6dd9e56f327c1dcb7 web
- https://github.com/pypa/advisory-database/tree/main/vulns/tensorflow-cpu/PYSEC-2021-622.yaml web
- https://github.com/pypa/advisory-database/tree/main/vulns/tensorflow-gpu/PYSEC-2021-820.yaml web
- https://github.com/pypa/advisory-database/tree/main/vulns/tensorflow/PYSEC-2021-405.yaml web
- https://github.com/tensorflow/tensorflow package