In Tensorflow before version 2.3.1, the RaggedCountSparseOutput implementation does not validate that the input arguments form a valid ragged tensor. In particular, there is no validation that the values in the splits tensor generate a valid partitioning of the values tensor. Thus, the code sets up conditions to cause a heap buffer overflow. A BatchedMap is equivalent to a vector where each element is a hashmap. However, if the first element of splits_values is not 0, batch_idx will never be 1, hence there will be no hashmap at index 0 in per_batch_counts. Trying to access that in the user code results in a segmentation fault. The issue is patched in commit 3cbb917b4714766030b28eba9fb41bb97ce9ee02 and is released in TensorFlow version 2.3.1.
[
{
"id": "CVE-2020-15200-9a90de26",
"source": "https://github.com/tensorflow/tensorflow/commit/3cbb917b4714766030b28eba9fb41bb97ce9ee02",
"target": {
"file": "tensorflow/core/kernels/count_ops.cc"
},
"signature_version": "v1",
"deprecated": false,
"digest": {
"line_hashes": [
"194455449804247006546970132492779615094",
"178731129031260204571627040095543599818",
"22442231680206585208932878058814312758",
"146741406298267783987235037807096346951",
"270064729730618086481934325402793011741",
"329344782668638107157103525047366598930",
"285728407237300076804994927600394619637",
"310080866930792095910778699557952768464",
"273815884519049275176915647183401088747",
"281569265756867032329963835068941296722",
"59438575670218216172183450249341417337",
"59397343641890017345404701263589996852",
"43962453346651511293497165677412754359",
"137531346914510616513168760830676577742"
],
"threshold": 0.9
},
"signature_type": "Line"
}
]