{"id":"CVE-2021-29558","details":"TensorFlow is an end-to-end open source platform for machine learning. An attacker can cause a heap buffer overflow in `tf.raw_ops.SparseSplit`. This is because the implementation(https://github.com/tensorflow/tensorflow/blob/699bff5d961f0abfde8fa3f876e6d241681fbef8/tensorflow/core/util/sparse/sparse_tensor.h#L528-L530) accesses an array element based on a user controlled offset. The fix will be included in TensorFlow 2.5.0. We will also cherrypick this commit on TensorFlow 2.4.2, TensorFlow 2.3.3, TensorFlow 2.2.3 and TensorFlow 2.1.4, as these are also affected and still in supported range.","aliases":["BIT-tensorflow-2021-29558","GHSA-mqh2-9wrp-vx84","PYSEC-2021-195","PYSEC-2021-486","PYSEC-2021-684"],"modified":"2026-10-16T07:07:21.990726532Z","published":"2021-05-14T20:15:13.290Z","database_specific":{},"references":[{"type":"FIX","url":"https://github.com/tensorflow/tensorflow/commit/8ba6fa29cd8bf9cef9b718dc31c78c73081f5b31"},{"type":"FIX","url":"https://github.com/tensorflow/tensorflow/security/advisories/GHSA-mqh2-9wrp-vx84"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/tensorflow/tensorflow","events":[{"introduced":"0"},{"fixed":"0931ea3d985bb9c8fdd054a5e29c4129623c849b"},{"introduced":"2b96f3662bd776e277f86997659e61046b56c315"},{"fixed":"cfe0c80169ae984bcdc99ff6de7444164aaa8e07"},{"introduced":"b36436b087bd8e8701ef51718179037cccdfc26e"},{"fixed":"3929ffacfbef7c431e8397920d040aaf47acff19"},{"introduced":"582c8d236cb079023657287c318ff26adb239002"},{"fixed":"1923123d32ea41d92b70a27a3f6ecf0763b56f6c"},{"fixed":"8ba6fa29cd8bf9cef9b718dc31c78c73081f5b31"}],"database_specific":{"extracted_events":[{"source":"CPE_RANGE","cpe":"cpe:2.3:a:google:tensorflow:*:*:*:*:*:*:*:*","range":[{"introduced":"0"},{"fixed":"2.1.4"}]},{"source":"CPE_RANGE","cpe":"cpe:2.3:a:google:tensorflow:*:*:*:*:*:*:*:*","range":[{"introduced":"2.2.0"},{"fixed":"2.2.3"}]},{"cpe":"cpe:2.3:a:google:tensorflow:*:*:*:*:*:*:*:*","range":[{"introduced":"2.3.0"},{"fixed":"2.3.3"}],"source":"CPE_RANGE"},{"source":"CPE_RANGE","cpe":"cpe:2.3:a:google:tensorflow:*:*:*:*:*:*:*:*","range":[{"introduced":"2.4.0"},{"fixed":"2.4.2"}]},{"range":[{"fixed":"8ba6fa29cd8bf9cef9b718dc31c78c73081f5b31"}],"source":"REFERENCES_COMMIT"}]}}],"versions":["v2.1.3","v2.2.2","v2.3.2","v2.4.1","v2.1.2","v2.2.1","v2.4.0","v2.3.1","v2.2.0","v2.1.1","v2.3.0","v2.1.0","v2.1.0-rc0","v2.1.0-rc2","v2.1.0-rc1","v1.12.1","v1.9.0-rc2","v1.6.0-rc1","v1.1.0-rc2","v1.1.0-rc1","0.6.0","0.5.0"],"database_specific":{"vanir_signatures":[{"deprecated":false,"digest":{"function_hash":"214375556340403537979185026199003347831","length":2503},"id":"CVE-2021-29558-64538035","signature_type":"Function","signature_version":"v1","source":"https://github.com/tensorflow/tensorflow/commit/8ba6fa29cd8bf9cef9b718dc31c78c73081f5b31","target":{"file":"tensorflow/core/util/sparse/sparse_tensor.h","function":"SparseTensor::Split"}},{"signature_type":"Line","signature_version":"v1","source":"https://github.com/tensorflow/tensorflow/commit/8ba6fa29cd8bf9cef9b718dc31c78c73081f5b31","target":{"file":"tensorflow/core/util/sparse/sparse_tensor.h"},"deprecated":false,"digest":{"line_hashes":["279818617668798798477423995082659241335","206755344413953338652130346008864127968","205767767023798358840436458717917167136","215022019207104171429559307174204363175"],"threshold":0.9},"id":"CVE-2021-29558-ba27ab98"}],"vanir_signatures_modified":"2026-10-16T07:07:21Z","source":"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2021-29558.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H"}]}