Patchfirst
CVE-2020-15211 Medium · 4.8 EPSS 0.9%

Out of bounds access in tensorflow-lite

tensorflow · tensorflow

Official description · CVE.org

In 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.

Breakdown
15.4 / 100
Exploited
Not confirmed
Reports
0
Tactics
3/15

How an attack unfolds

Based on mappings. Select a step to see the evidence.
  1. How attackers get in

  2. What they do

Disclosed on 25 Sep 2020. No public exploit code or confirmed exploitation is recorded.

techniques

2 , grouped by in kill-chain order 2

Initial AccessTA0001

MITRE CTID mapping of the CVE · how it is exploited

ExecutionTA0002

Hijack Execution Flow T1574 also Stealth
MITRE CTID mapping of the CVE · primary impact

Detection

0 rules for this CVE · 157 general rules for its techniques

Rules for this CVE

0 that reference CVE-2020-15211 directly.

CVE-specific rules are not available in this build. Search SigmaHQ ↗

Sigma rules © SigmaHQ, Detection Rule License 1.1; linked, not reproduced.

Am I affected? What do I upgrade to?

From GitHub Security Advisories and OSV

3 packages in 1 ecosystem. Main package: tensorflow.

Upgrade to 2.3.1 or later

Fixes this CVE and 2 other known vulnerabilities in this package (CVE-2020-15199, CVE-2020-15208).

pippip install "tensorflow>=2.3.1"

The first fix for CVE-2020-15211.

Affected versions, by release line

If you runUpgrade to
2.3.0 up to 2.3.12.3.1
2.2.0 up to 2.2.1

Still affected on this line by CVE-2020-15199 (fixed in 2.3.1, a newer line).

2.2.1
2.1.0 up to 2.1.2

Still affected on this line by CVE-2020-15199 (fixed in 2.3.1, a newer line).

2.1.2
2.0.0 up to 2.0.3

Still affected on this line by CVE-2020-15199 (fixed in 2.3.1, a newer line).

2.0.3
All versions before 1.15.4

Still affected on this line by CVE-2020-15199 (fixed in 2.3.1, a newer line).

1.15.4

“Up to” means the second version is the fix and is not affected.

Other packages that bundle this code (2)

Forks, repackagings and products that include the affected code. Each has its own fixed version.

  • PyPItensorflow-cpu
    Affected: 2.3.0 up to 2.3.1; 2.2.0 up to 2.2.1; 2.1.0 up to 2.1.2; 2.0.0 up to 2.0.3; All versions before 1.15.4Upgrade to 2.3.1 or later (older lines: 2.2.1, 2.1.2, 2.0.3, 1.15.4)
  • PyPItensorflow-gpu
    Affected: 2.3.0 up to 2.3.1; 2.2.0 up to 2.2.1; 2.1.0 up to 2.1.2; 2.0.0 up to 2.0.3; All versions before 1.15.4Upgrade to 2.3.1 or later (older lines: 2.2.1, 2.1.2, 2.0.3, 1.15.4)

Check your lockfile against all CVEs

What security researchers reported

Not named in any threat report yet

References

9 links, grouped by NVD tag
↑ ↓ chooseEnter openEsc close