Miggo Logo

CVE-2020-15209: Null pointer dereference in tensorflow-lite

5.9

CVSS Score
3.1

Basic Information

EPSS Score
0.57304%
Published
9/25/2020
Updated
10/28/2024
KEV Status
No
Technology
TechnologyPython

Technical Details

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
Package NameEcosystemVulnerable VersionsFirst Patched Version
tensorflowpip< 1.15.41.15.4
tensorflowpip>= 2.0.0, < 2.0.32.0.3
tensorflowpip>= 2.1.0, < 2.1.22.1.2
tensorflowpip= 2.2.02.2.1
tensorflowpip= 2.3.02.3.1
tensorflow-cpupip< 1.15.41.15.4
tensorflow-cpupip>= 2.0.0, < 2.0.32.0.3
tensorflow-cpupip>= 2.1.0, < 2.1.22.1.2
tensorflow-cpupip= 2.2.02.2.1
tensorflow-cpupip= 2.3.02.3.1
tensorflow-gpupip< 1.15.41.15.4
tensorflow-gpupip>= 2.0.0, < 2.0.32.0.3
tensorflow-gpupip>= 2.1.0, < 2.1.22.1.2
tensorflow-gpupip= 2.2.02.2.1
tensorflow-gpupip= 2.3.02.3.1

Vulnerability Intelligence
Miggo AIMiggo AI

Miggo AIRoot Cause Analysis

The vulnerability stems from missing null-check logic in Subgraph::Invoke. The original code (pre-patch) did not verify that tensors marked as read-write had valid buffers allocated. The patch added a critical check (tensor->data.raw == nullptr && tensor->bytes > 0) during input processing, explicitly validating buffer existence except for reshape's shape tensor. The absence of this check in vulnerable versions directly enabled the null pointer dereference attack vector.

Vulnerable functions

Only Mi**o us*rs **n s** t*is s**tion

WAF Protection Rules

WAF Rule

### Imp**t * *r**t** T*Lit* mo**l **n *or** * no** to **v* *s input * t*nsor ***k** *y * `nullptr` *u***r. T*is **n ** ***i*v** *y ***n*in* * *u***r in**x in t** *l*t*u***r s*ri*liz*tion to *onv*rt * r***-only t*nsor to * r***-writ* on*. T** runtim*

Reasoning

T** vuln*r**ility st*ms *rom missin* null-****k lo*i* in `Su**r*p*::Invok*`. T** ori*in*l *o** (pr*-p*t**) *i* not v*ri*y t**t t*nsors m*rk** *s r***-writ* *** v*li* *u***rs *llo**t**. T** p*t** ***** * *riti**l ****k (`t*nsor->**t*.r*w == nullptr &&