CVE-2020-15211

Summary

CVECVE-2020-15211
StatePUBLIC
Assigner[email protected]
Source PriorityCVE Program / NVD first with legacy fallback
Published2020-09-25 19:15:00 UTC
Updated2021-09-16 15:45:00 UTC
DescriptionIn TensorFlow Lite before versions 1.15.4, 2.0.3, 2.1.2, 2.2.1 and 2.3.1, saved models in the flatbuffer format use a double indexing scheme: a model has a set of subgraphs, each subgraph has a set of operators and each operator has a set of input/output tensors. The flatbuffer format uses indices for the tensors, indexing into an array of tensors that is owned by the subgraph. This results in a pattern of double array indexing when trying to get the data of each tensor. However, some operators can have some tensors be optional. To handle this scenario, the flatbuffer model uses a negative `-1` value as index for these tensors. This results in special casing during validation at model loading time. Unfortunately, this means that the `-1` index is a valid tensor index for any operator, including those that don't expect optional inputs and including for output tensors. Thus, this allows writing and reading from outside the bounds of heap allocated arrays, although only at a specific offset from the start of these arrays. This results in both read and write gadgets, albeit very limited in scope. The issue is patched in several commits (46d5b0852, 00302787b7, e11f5558, cd31fd0ce, 1970c21, and fff2c83), and is released in TensorFlow versions 1.15.4, 2.0.3, 2.1.2, 2.2.1, or 2.3.1. A potential workaround would be to add a custom `Verifier` to the model loading code to ensure that only operators which accept optional inputs use the `-1` special value and only for the tensors that they expect to be optional. Since this allow-list type approach is erro-prone, we advise upgrading to the patched code.

Risk And Classification

Problem Types: CWE-125 | CWE-787

NVD Known Affected Configurations (CPE 2.3)

TypeVendorProductVersionUpdateEditionLanguage
Application Google Tensorflow All All All All
Operating System Opensuse Leap 15.2 All All All
Application Tensorflow Tensorflow All All All All
Application Tensorflow Tensorflow All All All All

References

ReferenceSourceLinkTags
Out of bounds access in TFLite operators · Advisory · tensorflow/tensorflow · GitHub CONFIRM github.com Exploit, Third Party Advisory
[tflite] Test for `kTfLiteOptionalTensor` in `GetInput`. · tensorflow/tensorflow@46d5b08 · GitHub MISC github.com Patch, Third Party Advisory
[tflite] Make `GetOptionalInputTensor` the same as `GetInput`. · tensorflow/tensorflow@0030278 · GitHub MISC github.com Patch, Third Party Advisory
[tflite]: Insert `nullptr` checks when obtaining tensors. · tensorflow/tensorflow@1970c21 · GitHub MISC github.com Patch, Third Party Advisory
[tflite]: Insert `nullptr` checks when obtaining tensors. · tensorflow/tensorflow@cd31fd0 · GitHub MISC github.com Patch, Third Party Advisory
Release TensorFlow 2.3.1 · tensorflow/tensorflow · GitHub MISC github.com Third Party Advisory
[security-announce] openSUSE-SU-2020:1766-1: moderate: Security update f SUSE lists.opensuse.org
[tflite]: Insert `nullptr` checks when obtaining tensors. · tensorflow/tensorflow@e11f555 · GitHub MISC github.com Patch, Third Party Advisory
[tflite]: Insert `nullptr` checks when obtaining tensors. · tensorflow/tensorflow@fff2c83 · GitHub MISC github.com Patch, Third Party Advisory
CVE Program record CVE.ORG www.cve.org canonical
NVD vulnerability detail NVD nvd.nist.gov canonical, analysis

Legacy QID Mappings

  • 981464 Python (pip) Security Update for tensorflow (GHSA-cvpc-8phh-8f45)
© CVE.report 2026 |

Use of this information constitutes acceptance for use in an AS IS condition. There are NO warranties, implied or otherwise, with regard to this information or its use. Any use of this information is at the user's risk. It is the responsibility of user to evaluate the accuracy, completeness or usefulness of any information, opinion, advice or other content. EACH USER WILL BE SOLELY RESPONSIBLE FOR ANY consequences of his or her direct or indirect use of this web site. ALL WARRANTIES OF ANY KIND ARE EXPRESSLY DISCLAIMED. This site will NOT BE LIABLE FOR ANY DIRECT, INDIRECT or any other kind of loss.

CVE, CWE, and OVAL are registred trademarks of The MITRE Corporation and the authoritative source of CVE content is MITRE's CVE web site. This site includes MITRE data granted under the following license.

Free CVE JSON API cve.report/api

CVE.report and Source URL Uptime Status status.cve.report