Security advisory
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.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2019-16778
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 31 Oct 2026, 12:39 UTC · Revision 1
Source evidence
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.
osv:CVE-2019-16778
Complete source record
{
"id": "5566550a18a98be50cb85532f7d7052cf0709b301fad85903c144bec3fee8b68",
"url": "https://osv.dev/vulnerability/CVE-2019-16778",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "CVE-2019-16778",
"summary": "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.",
"evidence": "osv:CVE-2019-16778",
"products": [],
"severity": "critical",
"structured": {
"id": "CVE-2019-16778",
"aliases": [
"CVE-2019-16778",
"GHSA-844w-j86r-4x2j",
"PYSEC-2019-209",
"PYSEC-2019-227",
"PYSEC-2019-234"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/tensorflow/tensorflow",
"type": "GIT",
"events": [
{
"introduced": "07bb8ea2379bd459832b23951fb20ec47f3fdbd4"
},
{
"fixed": "590d6eef7e91a6a7392c8ffffb7b58f2e0c8bc6b"
},
{
"fixed": "db4f9717c41bccc3ce10099ab61996b246099892"
}
],
"database_specific": {
"extracted_events": [
{
"cpe": "cpe:2.3:a:google:tensorflow:*:*:*:*:*:*:*:*",
"range": [
{
"introduced": "1.0.0"
},
{
"fixed": "1.15.0"
}
],
"source": "CPE_RANGE"
},
{
"range": [
{
"fixed": "db4f9717c41bccc3ce10099ab61996b246099892"
}
],
"source": "REFERENCES_COMMIT"
}
]
}
}
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2019-16778.json",
"vanir_signatures": [
{
"id": "CVE-2019-16778-3e415c80",
"digest": {
"length": 587,
"function_hash": "266894416459361751620089497165734716131"
},
"source": "https://github.com/tensorflow/tensorflow/commit/db4f9717c41bccc3ce10099ab61996b246099892",
"target": {
"file": "tensorflow/core/kernels/segment_reduction_ops_gpu.cu.cc",
"function": "UnsortedSegmentCustomKernel"
},
"deprecated": false,
"signature_type": "Function",
"signature_version": "v1"
},
{
"id": "CVE-2019-16778-4e560553",
"digest": {
"threshold": 0.9,
"line_hashes": [
"6331943894980170858317685863833019921",
"214045140222777259402560935204409547022",
"325949159944068704645175937099705523434",
"217103848399254908549452665988682354306",
"36609377068039595622747933847199008210",
"303981863166469280781391800200062441955",
"135573884173473358802937650600170517754"
]
},
"source": "https://github.com/tensorflow/tensorflow/commit/db4f9717c41bccc3ce10099ab61996b246099892",
"target": {
"file": "tensorflow/core/kernels/segment_reduction_ops.h"
},
"deprecated": false,
"signature_type": "Line",
"signature_version": "v1"
},
{
"id": "CVE-2019-16778-586ec0b3",
"digest": {
"threshold": 0.9,
"line_hashes": [
"235808693327189569773861597970002535008",
"233840798026001491035449614171210650261",
"297236745294115179364218354575228198905",
"217103848399254908549452665988682354306",
"138171583532476712804643446649285637055",
"131438787052235017093187079144201496341",
"217587043612413161713395564627822427757",
"53898417695724250738386203698104109303",
"231774044929129441942408657734919873581",
"140085148330711797794822886821193955800",
"15495048468221142250885038703526623930",
"224724561869747404585048890080141808440",
"35978388368913015282323042689977567452",
"101151445395358462602359746539746681306",
"307500103657767808926503624762076338352",
"80536324588068045439065565551699926686",
"209722453098834018287566370706714234702",
"83735232936593708566606704657904030171",
"314847732684356313379879494794964162171",
"105669561747146498072531413962649791404",
"172522443652807291382493424283539300604",
"179629018600915798836450332928215706766",
"62604986084811498261860577393949968283",
"28615251482390868241522251138091267201",
"84524174550741019855421470326922165764",
"109034631481903650929940682251329303444",
"143075626819419434934623976388550016838",
"64740571689536485805738928248049143986",
"30327033083339852320058392098391597674"
]
},
"source": "https://github.com/tensorflow/tensorflow/commit/db4f9717c41bccc3ce10099ab61996b246099892",
"target": {
"file": "tensorflow/core/kernels/segment_reduction_ops.cc"
},
"deprecated": false,
"signature_type": "Line",
"signature_version": "v1"
},
{
"id": "CVE-2019-16778-658cad4b",
"digest": {
"threshold": 0.9,
"line_hashes": [
"241834037666819623320381953616657334415",
"90585862458611126869396751146719075224",
"284872941290040171933256608605664435682",
"245293425034819623005819707696611218443",
"239371226030914074137771114425101515639",
"111607732684104047069398367905718721602",
"255157576971051492744535599527380196849",
"127353723193930900676794857139839437423",
"270038944708426845955823256494207787275",
"186210706438643820419605026626225513271",
"195993372722558603778323033966360693538",
"128526609872678751648941912773596740388",
"32042473063003910688910450257822399593",
"316191027526243402032719468774352395646",
"23743177690187600005788207380750594215",
"294443632435942355517383844715153726745",
"198653707757938920082634171977107565854",
"25438555418510026969656707757172142427",
"209584356186833386283873667078455028045",
"80544102889775894229518500146424714561",
"117099923301638954517171633816362339360",
"217103848399254908549452665988682354306",
"138171583532476712804643446649285637055",
"291877326891371503454283783598949437601",
"164966773204095387073122954974107991607",
"192173673991019347476596747105667313908",
"319670334364595086588422219931456447943",
"92539266289901056658407397414959215628",
"171650989323595829624457831776727401695",
"327747886273491899192655896882347191672",
"201095175880604228994003679729554042810",
"191470641991708592979612823657418492473",
"70168493943418284232543547624190868968",
"76017820953141862933367634066537409660",
"242227575524681261580486205135821626686",
"335358723786867363265519041459636314861",
"16070661091722372647900024146014514860",
"123141785934739425068917517220333006988",
"152544555879643756162346618460030209319",
"337318988659652004145975253244355674786"
]
},
"source": "https://github.com/tensorflow/tensorflow/commit/db4f9717c41bccc3ce10099ab61996b246099892",
"target": {
"file": "tensorflow/core/kernels/segment_reduction_ops_gpu.cu.cc"
},
"deprecated": false,
"signature_type": "Line",
"signature_version": "v1"
}
],
"vanir_signatures_modified": "2026-10-20T14:10:43Z"
}
}
],
"modified": "2026-10-20T14:10:43.990349132Z",
"provider": "osv",
"references": [
"https://github.com/tensorflow/tensorflow/blob/master/tensorflow/security/advisory/tfsa-2019-002.md",
"https://github.com/tensorflow/tensorflow/commit/db4f9717c41bccc3ce10099ab61996b246099892",
"https://github.com/tensorflow/tensorflow/security/advisories/GHSA-844w-j86r-4x2j"
],
"provider_metadata": {}
},
"related_cves": [
{
"value": "CVE-2019-16778",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 388647,
"published_at": "2019-12-16T21:15:11.403+00:00"
}