CVE-2020-15209
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.
CVSS
- Versión: 3.1
- Vector: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
- Puntuación base: 5.9
Probabilidad de explotación (EPSS)
- Probabilidad de explotación en los próximos 30 días: 0.80%
- Percentil entre todas las CVEs puntuadas: 55
- Fecha de la puntuación: 7/10/2026
EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).
Tecnologías afectadas (2)
CWE
- CWE-476
Referencias
- http://lists.opensuse.org/opensuse-security-announce/2020-10/msg00065.html
- https://github.com/tensorflow/tensorflow/commit/0b5662bc2be13a8c8f044d925d87fb6e56247cd8
- https://github.com/tensorflow/tensorflow/releases/tag/v2.3.1
- https://github.com/tensorflow/tensorflow/security/advisories/GHSA-qh32-6jjc-qprm
- http://lists.opensuse.org/opensuse-security-announce/2020-10/msg00065.html
- https://github.com/tensorflow/tensorflow/commit/0b5662bc2be13a8c8f044d925d87fb6e56247cd8
- https://github.com/tensorflow/tensorflow/releases/tag/v2.3.1
- https://github.com/tensorflow/tensorflow/security/advisories/GHSA-qh32-6jjc-qprm
JSON original (NVD)
Mostrar
{
"id": "CVE-2020-15209",
"cveTags": [],
"metrics": {
"cvssMetricV2": [
{
"type": "Primary",
"source": "nvd@nist.gov",
"cvssData": {
"version": "2.0",
"baseScore": 4.3,
"accessVector": "NETWORK",
"vectorString": "AV:N/AC:M/Au:N/C:N/I:N/A:P",
"authentication": "NONE",
"integrityImpact": "NONE",
"accessComplexity": "MEDIUM",
"availabilityImpact": "PARTIAL",
"confidentialityImpact": "NONE"
},
"acInsufInfo": false,
"impactScore": 2.9,
"baseSeverity": "MEDIUM",
"obtainAllPrivilege": false,
"exploitabilityScore": 8.6,
"obtainUserPrivilege": false,
"obtainOtherPrivilege": false,
"userInteractionRequired": false
}
],
"cvssMetricV31": [
{
"type": "Secondary",
"source": "security-advisories@github.com",
"cvssData": {
"scope": "UNCHANGED",
"version": "3.1",
"baseScore": 5.9,
"attackVector": "NETWORK",
"baseSeverity": "MEDIUM",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H",
"integrityImpact": "NONE",
"userInteraction": "NONE",
"attackComplexity": "HIGH",
"availabilityImpact": "HIGH",
"privilegesRequired": "NONE",
"confidentialityImpact": "NONE"
},
"impactScore": 3.6,
"exploitabilityScore": 2.2
},
{
"type": "Primary",
"source": "nvd@nist.gov",
"cvssData": {
"scope": "UNCHANGED",
"version": "3.1",
"baseScore": 5.9,
"attackVector": "NETWORK",
"baseSeverity": "MEDIUM",
"vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H",
"integrityImpact": "NONE",
"userInteraction": "NONE",
"attackComplexity": "HIGH",
"availabilityImpact": "HIGH",
"privilegesRequired": "NONE",
"confidentialityImpact": "NONE"
},
"impactScore": 3.6,
"exploitabilityScore": 2.2
}
]
},
"affected": [
{
"source": "security-advisories@github.com",
"affectedData": [
{
"vendor": "tensorflow",
"product": "tensorflow",
"versions": [
{
"status": "affected",
"version": "< 1.15.4"
},
{
"status": "affected",
"version": ">= 2.0.0, < 2.0.3"
},
{
"status": "affected",
"version": ">= 2.1.0, < 2.1.2"
},
{
"status": "affected",
"version": ">= 2.2.0, < 2.2.1"
},
{
"status": "affected",
"version": ">= 2.3.0, < 2.3.1"
}
]
}
]
}
],
"published": "2020-09-25T19:15:16.213",
"references": [
{
"url": "http://lists.opensuse.org/opensuse-security-announce/2020-10/msg00065.html",
"tags": [
"Mailing List",
"Third Party Advisory"
],
"source": "security-advisories@github.com"
},
{
"url": "https://github.com/tensorflow/tensorflow/commit/0b5662bc2be13a8c8f044d925d87fb6e56247cd8",
"tags": [
"Patch",
"Third Party Advisory"
],
"source": "security-advisories@github.com"
},
{
"url": "https://github.com/tensorflow/tensorflow/releases/tag/v2.3.1",
"tags": [
"Third Party Advisory"
],
"source": "security-advisories@github.com"
},
{
"url": "https://github.com/tensorflow/tensorflow/security/advisories/GHSA-qh32-6jjc-qprm",
"tags": [
"Exploit",
"Third Party Advisory"
],
"source": "security-advisories@github.com"
},
{
"url": "http://lists.opensuse.org/opensuse-security-announce/2020-10/msg00065.html",
"tags": [
"Mailing List",
"Third Party Advisory"
],
"source": "af854a3a-2127-422b-91ae-364da2661108"
},
{
"url": "https://github.com/tensorflow/tensorflow/commit/0b5662bc2be13a8c8f044d925d87fb6e56247cd8",
"tags": [
"Patch",
"Third Party Advisory"
],
"source": "af854a3a-2127-422b-91ae-364da2661108"
},
{
"url": "https://github.com/tensorflow/tensorflow/releases/tag/v2.3.1",
"tags": [
"Third Party Advisory"
],
"source": "af854a3a-2127-422b-91ae-364da2661108"
},
{
"url": "https://github.com/tensorflow/tensorflow/security/advisories/GHSA-qh32-6jjc-qprm",
"tags": [
"Exploit",
"Third Party Advisory"
],
"source": "af854a3a-2127-422b-91ae-364da2661108"
}
],
"vulnStatus": "Modified",
"weaknesses": [
{
"type": "Secondary",
"source": "security-advisories@github.com",
"description": [
{
"lang": "en",
"value": "CWE-476"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "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."
},
{
"lang": "es",
"value": "En tensorflow-lite versiones anteriores a 1.15.4, 2.0.3, 2.1.2, 2.2.1 y 2.3.1, un modelo TFLite diseñado puede forzar a un nodo a tener como entrada un tensor respaldado por un búfer de \"nullptr\". Esto se puede lograr cambiando un índice de búfer en la serialización flatbuffer para convertir un tensor de solo lectura en uno de lectura y escritura. El tiempo de ejecución asume que estos búferes son escritos antes de una posible lectura, por lo que son inicializados con \"nullptr\". Sin embargo, al cambiar el índice del búfer por un tensor y convertir implícitamente ese tensor en uno de lectura y escritura, ya que no existe nada en el modelo que escriba en él, obtenemos una desreferencia del puntero null. El problema es parcheado en el commit 0b5662bc y es publicado en TensorFlow versiones 1.15.4, 2.0.3, 2.1.2, 2.2.1 o 2.3.1"
}
],
"lastModified": "2026-06-17T02:56:16.323",
"configurations": [
{
"nodes": [
{
"negate": false,
"cpeMatch": [
{
"criteria": "cpe:2.3:a:google:tensorflow:*:*:*:*:lite:*:*:*",
"vulnerable": true,
"matchCriteriaId": "7A5421A9-693F-472A-9A21-43950C884C77",
"versionEndExcluding": "1.15.4"
},
{
"criteria": "cpe:2.3:a:google:tensorflow:*:*:*:*:lite:*:*:*",
"vulnerable": true,
"matchCriteriaId": "B0FEB74E-5E54-4A2F-910C-FA1812C73DB2",
"versionEndExcluding": "2.0.3",
"versionStartIncluding": "2.0.0"
},
{
"criteria": "cpe:2.3:a:google:tensorflow:*:*:*:*:lite:*:*:*",
"vulnerable": true,
"matchCriteriaId": "47D83682-6615-49BC-8043-F36B9D017578",
"versionEndExcluding": "2.1.2",
"versionStartIncluding": "2.1.0"
},
{
"criteria": "cpe:2.3:a:google:tensorflow:*:*:*:*:lite:*:*:*",
"vulnerable": true,
"matchCriteriaId": "323B716A-E8F7-4CDA-B8FD-A56977D59C02",
"versionEndExcluding": "2.2.1",
"versionStartIncluding": "2.2.0"
},
{
"criteria": "cpe:2.3:a:google:tensorflow:*:*:*:*:lite:*:*:*",
"vulnerable": true,
"matchCriteriaId": "C09502A8-B667-4867-BEBD-40333E98A601",
"versionEndExcluding": "2.3.1",
"versionStartIncluding": "2.3.0"
}
],
"operator": "OR"
}
]
},
{
"nodes": [
{
"negate": false,
"cpeMatch": [
{
"criteria": "cpe:2.3:o:opensuse:leap:15.2:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "B009C22E-30A4-4288-BCF6-C3E81DEAF45A"
}
],
"operator": "OR"
}
]
}
],
"sourceIdentifier": "security-advisories@github.com"
}