CVE-2021-37680: Division by zero in TFLite in TensorFlow
Impact The implementation of fully connected layers in TFLite is vulnerable to a division by zero error:
cc const int batchsize = inputsize / filter->dims->data[1];
An attacker can craft a model such that filter->dims->data[1] is 0.
Patches We have patched the issue in GitHub commit 718721986aa137691ee23f03638867151f74935f.
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.
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. Concurrently, it has also been reported by Yakun Zhang of Baidu Security.
Other sources
TensorFlow is an end-to-end open source platform for machine learning. In affected versions the implementation of fully connected layers in TFLite is vulnerable to a division by zero error. We have patched the issue in GitHub commit 718721986aa137691ee23f03638867151f74935f. 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.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
pip/tensorflow-gputo a version that resolves this vulnerability.Fixed in 2.5.1 - Upgrade
Upgrade
pip/tensorflow-gputo a version that resolves this vulnerability.Fixed in 2.4.3 - Upgrade
Upgrade
pip/tensorflow-gputo a version that resolves this vulnerability.Fixed in 2.3.4 - Upgrade
Upgrade
pip/tensorflow-cputo a version that resolves this vulnerability.Fixed in 2.5.1 - Upgrade
Upgrade
pip/tensorflow-cputo a version that resolves this vulnerability.Fixed in 2.4.3 - Upgrade
Upgrade
pip/tensorflow-cputo a version that resolves this vulnerability.Fixed in 2.3.4 - Upgrade
Upgrade
pip/tensorflowto a version that resolves this vulnerability.Fixed in 2.5.1 - Upgrade
Upgrade
pip/tensorflowto a version that resolves this vulnerability.Fixed in 2.4.3 - Upgrade
Upgrade
pip/tensorflowto a version that resolves this vulnerability.Fixed in 2.3.4 - Upgrade
Upgrade
TensorFlowto a version that resolves this vulnerability.Fixed in 2.6.0Patch 718721986aa137691ee23f03638867151f74935f - Upgrade
Upgrade
TensorFlowto a version that resolves this vulnerability.Patch 718721986aa137691ee23f03638867151f74935f - Upgrade
Upgrade
TensorFlowto a version that resolves this vulnerability.Fixed in 2.5.1Patch 718721986aa137691ee23f03638867151f74935f - Upgrade
Upgrade
TensorFlowto a version that resolves this vulnerability.Fixed in 2.4.3Patch 718721986aa137691ee23f03638867151f74935f - Upgrade
Upgrade
TensorFlowto a version that resolves this vulnerability.Fixed in 2.3.4Patch 718721986aa137691ee23f03638867151f74935f
Event History
Frequently Asked Questions
What is the severity of CVE-2021-37680?
CVE-2021-37680 has a severity rating of high due to the potential for denial of service through a division by zero error.
How do I fix CVE-2021-37680?
To fix CVE-2021-37680, upgrade to TensorFlow version 2.5.1 or later.
Which versions of TensorFlow are affected by CVE-2021-37680?
TensorFlow versions 2.3.0 to 2.3.4, 2.4.0 to 2.4.3, and 2.5.0, along with pre-releases 2.6.0-rc0, 2.6.0-rc1, and 2.6.0-rc2, are affected by CVE-2021-37680.
What is the nature of the vulnerability in CVE-2021-37680?
CVE-2021-37680 is a division by zero vulnerability that can cause crashes in applications using the affected TensorFlow versions.
Is there a workaround for CVE-2021-37680 if I can't update TensorFlow?
There is no officially recommended workaround for CVE-2021-37680, so updating TensorFlow to a secure version is advised.