Skip to content
HighVulnerability

CVE-2021-37679: TensorFlow heap memory leak through nested tf.map_fn with RaggedTensor

Identifier
CVE-2021-37679
Published
Record updated
View JSON
Affected
  • tensorflow < 2.3.4, fixed in 2.3.4, released August 10, 2021, 3 days before disclosure
  • tensorflow >= 2.4.0, < 2.4.3, fixed in 2.4.3, released August 10, 2021, 3 days before disclosure
  • tensorflow = 2.5.0, fixed in 2.5.1, released August 10, 2021, 3 days before disclosure
  • and 6 more
Known exploitation
Not listed in the CISA Known Exploited Vulnerabilities catalog at the last check.
EPSS
0.2%

Summary

TensorFlow affected versions allow a `tf.map_fn` to be nested within another `tf.map_fn` call. When the input is a `RaggedTensor` and no function signature is provided, the output buffer is filled with uninitialized heap contents, so the last row of `t` can expose other memory information. The flaw lies in the conversion from a `Variant` tensor to a `RaggedTensor`, whose implementation does not check that all inner shapes match, and this can also cause data loss if the input tensor is altered.

Mitigation

Patched in GitHub commit 4e2565483d0ffcadc719bd44893fb7f609bb5f12. The fix will be included in TensorFlow 2.6.0, and the commit will be cherry-picked to TensorFlow 2.5.1, TensorFlow 2.4.3, and TensorFlow 2.3.4.