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.
[ { "source": "https://github.com/tensorflow/tensorflow/commit/3cbb917b4714766030b28eba9fb41bb97ce9ee02", "target": { "file": "tensorflow/core/kernels/count_ops.cc" }, "signature_type": "Line", "deprecated": false, "id": "CVE-2020-15200-9a90de26", "signature_version": "v1", "digest": { "line_hashes": [ "194455449804247006546970132492779615094", "178731129031260204571627040095543599818", "22442231680206585208932878058814312758", "146741406298267783987235037807096346951", "270064729730618086481934325402793011741", "329344782668638107157103525047366598930", "285728407237300076804994927600394619637", "310080866930792095910778699557952768464", "273815884519049275176915647183401088747", "281569265756867032329963835068941296722", "59438575670218216172183450249341417337", "59397343641890017345404701263589996852", "43962453346651511293497165677412754359", "137531346914510616513168760830676577742" ], "threshold": 0.9 } } ]