In tensorflow-lite before versions 1.15.4, 2.0.3, 2.1.2, 2.2.1 and 2.3.1, a crafted TFLite model can force a node to have as input a tensor backed by a nullptr
buffer. This can be achieved by changing a buffer index in the flatbuffer serialization to convert a read-only tensor to a read-write one. The runtime assumes that these buffers are written to before a possible read, hence they are initialized with nullptr
. However, by changing the buffer index for a tensor and implicitly converting that tensor to be a read-write one, as there is nothing in the model that writes to it, we get a null pointer dereference. The issue is patched in commit 0b5662bc, and is released in TensorFlow versions 1.15.4, 2.0.3, 2.1.2, 2.2.1, or 2.3.1.
{ "vanir_signatures": [ { "id": "CVE-2020-15209-1c08137f", "source": "https://github.com/tensorflow/tensorflow/commit/0b5662bc2be13a8c8f044d925d87fb6e56247cd8", "deprecated": false, "signature_version": "v1", "signature_type": "Line", "digest": { "threshold": 0.9, "line_hashes": [ "118310501331616023350717681784829709784", "57364967679429806816256655767148470264", "102921009719167603431635488173237461403", "53810865977217055415276430758078361965", "305638738759426742636057687230277032594", "34872329951284026900110491077515923900", "202202117899958313685333926239881024739", "157562451449126841672195308694127197625", "149073477471276229723057206179610917054", "274105956972391255319063024138059560180", "230596824339254107197600048256212159624", "309207681048257396052300636804196043320", "65600312656929052008905661471385857207", "144945867077828154796586203507136244400", "124552705122710412742356347640769760909", "131598364421439620296301899740248428117", "189004029897638777771318898477545259908", "84070706133558568929049029694655438503" ] }, "target": { "file": "tensorflow/lite/model_test.cc" } }, { "id": "CVE-2020-15209-432c9fb2", "source": "https://github.com/tensorflow/tensorflow/commit/0b5662bc2be13a8c8f044d925d87fb6e56247cd8", "deprecated": false, "signature_version": "v1", "signature_type": "Function", "digest": { "length": 2213.0, "function_hash": "66171894964802191235365235219766751684" }, "target": { "file": "tensorflow/lite/core/subgraph.cc", "function": "Subgraph::Invoke" } }, { "id": "CVE-2020-15209-54e67227", "source": "https://github.com/tensorflow/tensorflow/commit/0b5662bc2be13a8c8f044d925d87fb6e56247cd8", "deprecated": false, "signature_version": "v1", "signature_type": "Line", "digest": { "threshold": 0.9, "line_hashes": [ "288632793624738279975311723889403186854", "231838817353400695959687593382318508022", "136835989989611429058744611617542146033", "319476659976459967670411920219287419521", "259493130716973356554453251726916005105", "55895977300738371728966476833896950516", "80620433833618409211919915782517539096", "82089039147305956708211307876170608615" ] }, "target": { "file": "tensorflow/lite/core/subgraph.cc" } }, { "id": "CVE-2020-15209-94238736", "source": "https://github.com/tensorflow/tensorflow/commit/0b5662bc2be13a8c8f044d925d87fb6e56247cd8", "deprecated": false, "signature_version": "v1", "signature_type": "Function", "digest": { "length": 474.0, "function_hash": "72409903535934688868846486751425969565" }, "target": { "file": "tensorflow/lite/model_test.cc", "function": "TEST" } } ] }