Security advisory
In Tensorflow before versions 2.2.1 and 2.3.1, the implementation of `dlpack.to_dlpack` can be made to use uninitialized memory resulting in further memory corruption. This is because the pybind11 glue code assumes that the argument is a tensor. However, there is nothing stopping users from passing in a Python object instead of a tensor. The uninitialized memory address is due to a `reinterpret_cast` Since the `PyObject` is a Python object, not a TensorFlow Tensor, the cast to `EagerTensor` fails. The issue is patched in commit 22e07fb204386768e5bcbea563641ea11f96ceb8 and is released in TensorFlow versions 2.2.1, or 2.3.1.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2020-15193
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 31 Oct 2026, 12:40 UTC · Revision 1
Source evidence
In Tensorflow before versions 2.2.1 and 2.3.1, the implementation of `dlpack.to_dlpack` can be made to use uninitialized memory resulting in further memory corruption. This is because the pybind11 glue code assumes that the argument is a tensor. However, there is nothing stopping users from passing in a Python object instead of a tensor. The uninitialized memory address is due to a `reinterpret_cast` Since the `PyObject` is a Python object, not a TensorFlow Tensor, the cast to `EagerTensor` fails. The issue is patched in commit 22e07fb204386768e5bcbea563641ea11f96ceb8 and is released in TensorFlow versions 2.2.1, or 2.3.1.
osv:CVE-2020-15193
Complete source record
{
"id": "cff2b6de0368b510a21ce263cb4b0c47eef41852ecdee5795b52a8ad33ce34cd",
"url": "https://osv.dev/vulnerability/CVE-2020-15193",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "CVE-2020-15193",
"summary": "In Tensorflow before versions 2.2.1 and 2.3.1, the implementation of `dlpack.to_dlpack` can be made to use uninitialized memory resulting in further memory corruption. This is because the pybind11 glue code assumes that the argument is a tensor. However, there is nothing stopping users from passing in a Python object instead of a tensor. The uninitialized memory address is due to a `reinterpret_cast` Since the `PyObject` is a Python object, not a TensorFlow Tensor, the cast to `EagerTensor` fails. The issue is patched in commit 22e07fb204386768e5bcbea563641ea11f96ceb8 and is released in TensorFlow versions 2.2.1, or 2.3.1.",
"evidence": "osv:CVE-2020-15193",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2020-15193",
"aliases": [
"BIT-tensorflow-2020-15193",
"CVE-2020-15193",
"GHSA-rjjg-hgv6-h69v",
"PYSEC-2020-116",
"PYSEC-2020-273",
"PYSEC-2020-308"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/tensorflow/tensorflow",
"type": "GIT",
"events": [
{
"introduced": "2b96f3662bd776e277f86997659e61046b56c315"
},
{
"last_affected": "b36436b087bd8e8701ef51718179037cccdfc26e"
},
{
"fixed": "22e07fb204386768e5bcbea563641ea11f96ceb8"
},
{
"fixed": "fcc4b966f1265f466e82617020af93670141b009"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:google:tensorflow:2.2.0:*:*:*:-:*:*:*",
"range": [
{
"introduced": "2.2.0"
},
{
"last_affected": "2.2.0"
}
],
"source": "CPE_STRING"
},
{
"cpe": "cpe:2.3:a:google:tensorflow:2.3.0:*:*:*:-:*:*:*",
"range": [
{
"introduced": "2.3.0"
},
{
"last_affected": "2.3.0"
}
],
"source": "CPE_STRING"
},
{
"range": [
{
"fixed": "22e07fb204386768e5bcbea563641ea11f96ceb8"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "fcc4b966f1265f466e82617020af93670141b009"
}
],
"source": "REFERENCES_TAG",
"original_tag": "v2.3.1"
}
]
}
}
],
"versions": [
"2.2.0",
"2.3.0"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2020-15193.json",
"vanir_signatures": [
{
"id": "CVE-2020-15193-28b47c62",
"digest": {
"length": 1068,
"function_hash": "302909230814631908500873842520316055001"
},
"source": "https://github.com/tensorflow/tensorflow/commit/22e07fb204386768e5bcbea563641ea11f96ceb8",
"target": {
"file": "tensorflow/c/eager/dlpack.cc",
"function": "TFE_HandleToDLPack"
},
"deprecated": false,
"signature_type": "Function",
"signature_version": "v1"
},
{
"id": "CVE-2020-15193-5c62b918",
"digest": {
"length": 40733,
"function_hash": "24753109135250677179816536229137657275"
},
"source": "https://github.com/tensorflow/tensorflow/commit/22e07fb204386768e5bcbea563641ea11f96ceb8",
"target": {
"file": "tensorflow/python/tfe_wrapper.cc",
"function": "PYBIND11_MODULE"
},
"deprecated": false,
"signature_type": "Function",
"signature_version": "v1"
},
{
"id": "CVE-2020-15193-61b62625",
"digest": {
"threshold": 0.9,
"line_hashes": [
"203184394093938566735101442339476286402",
"5057783822461729014686159011822875566",
"276337694304556640652692797546760300494",
"324519683375647210480153687631467865768",
"150394200301454229501015301415659583403",
"193926713344694573779654214522808465940"
]
},
"source": "https://github.com/tensorflow/tensorflow/commit/22e07fb204386768e5bcbea563641ea11f96ceb8",
"target": {
"file": "tensorflow/python/tfe_wrapper.cc"
},
"deprecated": false,
"signature_type": "Line",
"signature_version": "v1"
},
{
"id": "CVE-2020-15193-ba7f858a",
"digest": {
"threshold": 0.9,
"line_hashes": [
"292945338278192546795872999715438919692",
"8499956686667079679287218720624198012",
"307114024074474464007071230750556435264",
"328636996453833581469835052556533486484",
"330074296641229322375849268324042839247",
"297098567421169699229427655622528681499",
"5005939368759929207605833461930312587",
"71125840436849761506943478301431655003",
"188619440248625237133937985021060796580",
"238407969739438406160217647691629800386",
"270117986294955159119535060630390044808",
"195004349352804827391322080325011119731",
"141444573330419127191167987337461451144",
"150569583603784431261765181427430532486",
"153618812154243453255623643549632453896",
"48503017837638972005747806247883235751",
"132225355395750670746629296731937542309",
"96071311886532311406221375120395617570",
"105512974983660108519637253708194445101",
"78023981141124778261323221962248709649",
"291525630689812036460554464906136495752",
"200733148512573282717005722123763233839"
]
},
"source": "https://github.com/tensorflow/tensorflow/commit/22e07fb204386768e5bcbea563641ea11f96ceb8",
"target": {
"file": "tensorflow/c/eager/dlpack.cc"
},
"deprecated": false,
"signature_type": "Line",
"signature_version": "v1"
}
],
"vanir_signatures_modified": "2026-10-20T14:10:56Z"
}
}
],
"modified": "2026-10-20T14:10:56.647677708Z",
"provider": "osv",
"references": [
"https://github.com/tensorflow/tensorflow/releases/tag/v2.3.1",
"https://github.com/tensorflow/tensorflow/commit/22e07fb204386768e5bcbea563641ea11f96ceb8",
"https://github.com/tensorflow/tensorflow/security/advisories/GHSA-rjjg-hgv6-h69v"
],
"provider_metadata": {
"unresolved_ranges": [
{
"cpes": [
"cpe:2.3:o:opensuse:leap:15.2:*:*:*:*:*:*:*"
],
"vendor_product": "opensuse:leap",
"extracted_events": [
{
"range": [
{
"introduced": "15.2"
},
{
"last_affected": "15.2"
}
],
"source": "CPE_STRING"
}
]
}
]
}
},
"related_cves": [
{
"value": "CVE-2020-15193",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 388681,
"published_at": "2020-09-25T19:15:14.573+00:00"
}