{"id":"CVE-2019-16778","aliases":["EUVD-2019-0142","GHSA-844w-j86r-4x2j","PYSEC-2019-209","PYSEC-2019-227","PYSEC-2019-234"],"status":"published","title":"Heap buffer overflow in `UnsortedSegmentSum` in TensorFlow","description":"In TensorFlow before 1.15, a heap buffer overflow in UnsortedSegmentSum can be produced when the Index template argument is int32. In this case data_size and num_segments fields are truncated from int64 to int32 and can produce negative numbers, resulting in accessing out of bounds heap memory. This is unlikely to be exploitable and was detected and fixed internally in TensorFlow 1.15 and 2.0.","severity":{"version":"3.1","score":2.6,"vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:N/I:N/A:L","level":"low","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-09","score":0.00788,"percentile":0.56461,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-122","CWE-681"],"published":"2019-12-16T20:15:14Z","modified":"2026-10-20T14:10:43Z","fixes":[{"ecosystem":"PyPI","package":"tensorflow","fixed_in":["1.15.0"],"sources":["ghsa","osv"]},{"ecosystem":"PyPI","package":"tensorflow-cpu","fixed_in":["1.15.0"],"sources":["ghsa","osv"]},{"ecosystem":"PyPI","package":"tensorflow-gpu","fixed_in":["1.15.0"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"PyPI","package":"tensorflow","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.15.0"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"tensorflow-cpu","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.15.0"}]}]},{"source":"ghsa","ecosystem":"PyPI","package":"tensorflow-gpu","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.15.0"}]}]},{"source":"osv","ecosystem":"PyPI","package":"tensorflow","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.15.0"}]}],"versions":["0.12.0","0.12.1","1.0.0","1.0.1","1.1.0","1.10.0","1.10.1","1.11.0","1.12.0","1.12.2","1.12.3","1.13.1","1.13.2","1.14.0","1.2.0","1.2.1","1.3.0","1.4.0","1.4.1","1.5.0","1.5.1","1.6.0","1.7.0","1.7.1","1.8.0","1.9.0"]},{"source":"osv","ecosystem":"PyPI","package":"tensorflow-cpu","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.15.0"}]}]},{"source":"osv","ecosystem":"PyPI","package":"tensorflow-gpu","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.15.0"}]}],"versions":["0.12.0","0.12.1","1.0.0","1.0.1","1.1.0","1.10.0","1.10.1","1.11.0","1.12.0","1.12.2","1.12.3","1.13.1","1.13.2","1.14.0","1.2.0","1.2.1","1.3.0","1.4.0","1.4.1","1.5.0","1.5.1","1.6.0","1.7.0","1.7.1","1.8.0","1.9.0"]},{"source":"osv","ecosystem":"PyPI","package":"tensorflow","ranges":[{"type":"GIT","events":[{"introduced":"0"},{"fixed":"db4f9717c41bccc3ce10099ab61996b246099892"}]},{"type":"ECOSYSTEM","events":[{"introduced":"1.0.0"},{"fixed":"1.15.0"}]}],"versions":["1.0.0","1.0.1","1.1.0","1.1.0rc0","1.1.0rc1","1.1.0rc2","1.10.0","1.10.0rc0","1.10.0rc1","1.10.1","1.11.0","1.11.0rc0","1.11.0rc1","1.11.0rc2","1.12.0","1.12.0rc0","1.12.0rc1","1.12.0rc2","1.12.2","1.12.3","1.13.0rc0","1.13.0rc1","1.13.0rc2","1.13.1","1.13.2","1.14.0","1.14.0rc0","1.14.0rc1","1.15.0rc0","1.15.0rc1","1.15.0rc2","1.15.0rc3","1.2.0","1.2.0rc0","1.2.0rc1","1.2.0rc2","1.2.1","1.3.0","1.3.0rc0","1.3.0rc1","1.3.0rc2","1.4.0","1.4.0rc0","1.4.0rc1","1.4.1","1.5.0","1.5.0rc0","1.5.0rc1","1.5.1","1.6.0","1.6.0rc0","1.6.0rc1","1.7.0","1.7.0rc0","1.7.0rc1","1.7.1","1.8.0","1.8.0rc0","1.8.0rc1","1.9.0","1.9.0rc0","1.9.0rc1","1.9.0rc2"]},{"source":"osv","ecosystem":"PyPI","package":"tensorflow-cpu","ranges":[{"type":"GIT","events":[{"introduced":"0"},{"fixed":"db4f9717c41bccc3ce10099ab61996b246099892"}]},{"type":"ECOSYSTEM","events":[{"introduced":"1.0.0"},{"fixed":"1.15.0"}]}]},{"source":"osv","ecosystem":"PyPI","package":"tensorflow-gpu","ranges":[{"type":"GIT","events":[{"introduced":"0"},{"fixed":"db4f9717c41bccc3ce10099ab61996b246099892"}]},{"type":"ECOSYSTEM","events":[{"introduced":"1.0.0"},{"fixed":"1.15.0"}]}],"versions":["1.0.0","1.0.1","1.1.0","1.10.0","1.10.1","1.11.0","1.12.0","1.12.2","1.12.3","1.13.1","1.13.2","1.14.0","1.2.0","1.2.1","1.3.0","1.4.0","1.4.1","1.5.0","1.5.1","1.6.0","1.7.0","1.7.1","1.8.0","1.9.0"]}],"products":[{"vendor":"google","product":"tensorflow"},{"vendor":"tensorflow","product":"tensorflow"}],"references":[{"url":"https://github.com/tensorflow/tensorflow/security/advisories/GHSA-844w-j86r-4x2j","tags":["x_refsource_CONFIRM","x_transferred","Patch","Third Party Advisory","fix","web","advisory"]},{"url":"https://github.com/tensorflow/tensorflow/commit/db4f9717c41bccc3ce10099ab61996b246099892","tags":["x_refsource_MISC","x_transferred","Patch","fix","web"]},{"url":"https://github.com/tensorflow/tensorflow/blob/master/tensorflow/security/advisory/tfsa-2019-002.md","tags":["x_refsource_MISC","x_transferred","Third Party Advisory","advisory","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2019-16778","tags":["advisory"]},{"url":"https://github.com/pypa/advisory-database/tree/main/vulns/tensorflow-cpu/PYSEC-2019-227.yaml","tags":["web"]},{"url":"https://github.com/pypa/advisory-database/tree/main/vulns/tensorflow-gpu/PYSEC-2019-234.yaml","tags":["web"]},{"url":"https://github.com/pypa/advisory-database/tree/main/vulns/tensorflow/PYSEC-2019-209.yaml","tags":["web"]},{"url":"https://github.com/advisories/GHSA-844w-j86r-4x2j"},{"url":"https://github.com/tensorflow/tensorflow","tags":["package"]}],"sources":{"cve":[{"id":"CVE-2019-16778","title":"Heap buffer overflow in `UnsortedSegmentSum` in TensorFlow","description":"In TensorFlow before 1.15, a heap buffer overflow in UnsortedSegmentSum can be produced when the Index template argument is int32. In this case data_size and num_segments fields are truncated from int64 to int32 and can produce negative numbers, resulting in accessing out of bounds heap memory. This is unlikely to be exploitable and was detected and fixed internally in TensorFlow 1.15 and 2.0.","status":"published","published":"2019-12-16T20:15:14Z","modified":"2024-08-05T01:24:48.54Z","cvss":[{"version":"3.1","score":2.6,"vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:N/I:N/A:L","level":"low","assessor":"cna"}],"cwes":["CWE-122"],"updated_at":"2026-11-02T14:32:23.485011Z"}],"euvd":[{"id":"EUVD-2019-0142","description":"In TensorFlow before 1.15, a heap buffer overflow in UnsortedSegmentSum can be produced when the Index template argument is int32. In this case data_size and num_segments fields are truncated from int64 to int32 and can produce negative numbers, resulting in accessing out of bounds heap memory. This is unlikely to be exploitable and was detected and fixed internally in TensorFlow 1.15 and 2.0.","status":"published","published":"2019-12-16T20:15:14Z","modified":"2024-08-05T01:24:48Z","cvss":[{"version":"3.1","score":2.6,"vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:N/I:N/A:L","level":"low"}],"updated_at":"2026-11-03T02:40:31.903592Z"}],"ghsa":[{"id":"GHSA-844w-j86r-4x2j","title":"Heap buffer overflow in `UnsortedSegmentSum` in TensorFlow","description":"### Impact\n\nA heap buffer overflow in `UnsortedSegmentSum` can be produced when the `Index` template argument is `int32`. In this case `data_size` and `num_segments` fields are truncated from `int64` to `int32` and can produce negative numbers, resulting in accessing out of bounds heap memory.\n\nThis is unlikely to be exploitable and was detected and fixed internally. We are making the security advisory only to notify users that it is better to update to TensorFlow 1.15 or 2.0 or later as these versions already have this fixed.\n\n### Patches\n\nPatched by db4f9717c41bccc3ce10099ab61996b246099892 and released in all official releases after 1.15 and 2.0.\n\n### For more information\nPlease consult [`SECURITY.md`](https://github.com/tensorflow/tensorflow/blob/master/SECURITY.md) for more information regarding the security model and how to contact us with issues and questions.","status":"published","published":"2019-12-16T20:17:10Z","modified":"2024-10-28T14:44:39Z","cvss":[{"version":"4.0","score":2.1,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:P/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N","level":"low"},{"version":"3.1","score":2.6,"vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:N/I:N/A:L","level":"low"}],"cwes":["CWE-122","CWE-681"],"updated_at":"2026-11-02T14:38:13.90937Z"}],"nvd":[{"id":"CVE-2019-16778","description":"In TensorFlow before 1.15, a heap buffer overflow in UnsortedSegmentSum can be produced when the Index template argument is int32. In this case data_size and num_segments fields are truncated from int64 to int32 and can produce negative numbers, resulting in accessing out of bounds heap memory. This is unlikely to be exploitable and was detected and fixed internally in TensorFlow 1.15 and 2.0.","status":"published","published":"2019-12-16T21:15:11.403Z","modified":"2026-06-17T02:22:47.09Z","cvss":[{"version":"3.1","score":2.6,"vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:N/I:N/A:L","level":"low","assessor":"secondary"},{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary"},{"version":"2.0","score":7.5,"vector":"AV:N/AC:L/Au:N/C:P/I:P/A:P","level":"high","assessor":"primary"}],"cwes":["CWE-122","CWE-681"],"updated_at":"2026-11-02T14:05:40.258829Z"}],"osv":[{"id":"CVE-2019-16778","description":"In TensorFlow before 1.15, a heap buffer overflow in UnsortedSegmentSum can be produced when the Index template argument is int32. In this case data_size and num_segments fields are truncated from int64 to int32 and can produce negative numbers, resulting in accessing out of bounds heap memory. This is unlikely to be exploitable and was detected and fixed internally in TensorFlow 1.15 and 2.0.","status":"published","published":"2019-12-16T21:15:11.403Z","modified":"2026-10-20T14:10:43.990349132Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"}],"updated_at":"2026-11-02T15:44:11.673963Z"},{"id":"GHSA-844w-j86r-4x2j","title":"Heap buffer overflow in `UnsortedSegmentSum` in TensorFlow","description":"### Impact\n\nA heap buffer overflow in `UnsortedSegmentSum` can be produced when the `Index` template argument is `int32`. In this case `data_size` and `num_segments` fields are truncated from `int64` to `int32` and can produce negative numbers, resulting in accessing out of bounds heap memory.\n\nThis is unlikely to be exploitable and was detected and fixed internally. We are making the security advisory only to notify users that it is better to update to TensorFlow 1.15 or 2.0 or later as these versions already have this fixed.\n\n### Patches\n\nPatched by db4f9717c41bccc3ce10099ab61996b246099892 and released in all official releases after 1.15 and 2.0.\n\n### For more information\nPlease consult [`SECURITY.md`](https://github.com/tensorflow/tensorflow/blob/master/SECURITY.md) for more information regarding the security model and how to contact us with issues and questions.","status":"published","published":"2019-12-16T20:17:10Z","modified":"2026-07-08T06:00:58.351181091Z","cvss":[{"version":"3.1","score":2.6,"vector":"CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:N/I:N/A:L","level":"low"},{"version":"4.0","score":2.1,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:P/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N","level":"low"}],"cwes":["CWE-122","CWE-681"],"updated_at":"2026-11-02T15:46:41.732368Z"},{"id":"PYSEC-2019-209","description":"In TensorFlow before 1.15, a heap buffer overflow in UnsortedSegmentSum can be produced when the Index template argument is int32. In this case data_size and num_segments fields are truncated from int64 to int32 and can produce negative numbers, resulting in accessing out of bounds heap memory. This is unlikely to be exploitable and was detected and fixed internally in TensorFlow 1.15 and 2.0.","status":"published","published":"2019-12-16T21:15:00Z","modified":"2023-11-08T04:01:21.393349Z","updated_at":"2026-11-02T15:52:52.192131Z"},{"id":"PYSEC-2019-227","description":"In TensorFlow before 1.15, a heap buffer overflow in UnsortedSegmentSum can be produced when the Index template argument is int32. In this case data_size and num_segments fields are truncated from int64 to int32 and can produce negative numbers, resulting in accessing out of bounds heap memory. This is unlikely to be exploitable and was detected and fixed internally in TensorFlow 1.15 and 2.0.","status":"published","published":"2019-12-16T21:15:00Z","modified":"2023-11-08T04:01:21.393349Z","updated_at":"2026-11-02T15:52:52.192131Z"},{"id":"PYSEC-2019-234","description":"In TensorFlow before 1.15, a heap buffer overflow in UnsortedSegmentSum can be produced when the Index template argument is int32. In this case data_size and num_segments fields are truncated from int64 to int32 and can produce negative numbers, resulting in accessing out of bounds heap memory. This is unlikely to be exploitable and was detected and fixed internally in TensorFlow 1.15 and 2.0.","status":"published","published":"2019-12-16T21:15:00Z","modified":"2023-11-08T04:01:21.393349Z","updated_at":"2026-11-02T15:52:52.192131Z"}]}}
