Heap buffer overflow in `StringNGrams`
Package
Affected versions
< 2.1.4
>= 2.2.0, < 2.2.3
>= 2.3.0, < 2.3.3
>= 2.4.0, < 2.4.2
Patched versions
2.1.4
2.2.3
2.3.3
2.4.2
< 2.1.4
>= 2.2.0, < 2.2.3
>= 2.3.0, < 2.3.3
>= 2.4.0, < 2.4.2
2.1.4
2.2.3
2.3.3
2.4.2
< 2.1.4
>= 2.2.0, < 2.2.3
>= 2.3.0, < 2.3.3
>= 2.4.0, < 2.4.2
2.1.4
2.2.3
2.3.3
2.4.2
Description
Published by the National Vulnerability Database
May 14, 2021
Reviewed
May 18, 2021
Published to the GitHub Advisory Database
May 21, 2021
Last updated
Oct 31, 2024
Impact
An attacker can cause a heap buffer overflow by passing crafted inputs to
tf.raw_ops.StringNGrams
:This is because the implementation fails to consider corner cases where input would be split in such a way that the generated tokens should only contain padding elements:
If input is such that
num_tokens
is 0, then, fordata_start_index=0
(when left padding is present), the marked line would result in readingdata[-1]
.Patches
We have patched the issue in GitHub commit ba424dd8f16f7110eea526a8086f1a155f14f22b.
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.
For more information
Please consult our security guide for more information regarding the security model and how to contact us with issues and questions.
Attribution
This vulnerability has been reported by Yakun Zhang and Ying Wang of Baidu X-Team.
References