Executive brief
TensorFlow is an open-source machine learning library used for building and training neural networks. The Transpose operation's shape inference function contains a heap buffer overflow vulnerability that can be triggered by providing negative index values in the permutation parameter. An attacker who can supply malicious inputs to a TensorFlow model could cause a crash (denial of service) or potentially achieve code execution.
Technical details
The vulnerability is a heap buffer overflow (CWE-787, CWE-120) in the shape inference function of TensorFlow's Transpose operation. The root cause is insufficient validation: the function checks if permutation indices are greater than or equal to the rank but fails to validate against negative indices before using them. When a negative perm value is passed (e.g., perm=[-10]), the Dim() function accepts -1 as a special value for unknown dimensions, but the code does not properly validate other negative values, leading to out-of-bounds memory access. The vulnerability is triggered by calling tf.raw_ops.Transpose() with a negative perm argument and requires local access or the ability to supply inputs to a running TensorFlow model. The fix validates all indices in perm and was patched in commit c79ba87153ee343401dbe9d1954d7f79e521eb14.
Affected products
- Google TensorFlow 0.12.0 through 2.4.3, 2.5.0-2.5.1, 2.6.0
- Google TensorFlow CPU 1.15.0 through 2.4.3, 2.5.0-2.5.1, 2.6.0
- Google TensorFlow GPU 0.12.0 through 2.4.3, 2.5.0-2.5.1, 2.6.0
Timeline
- 2021-11-04: disclosed: Advisory published
- 2021-11-10: patched: Patches released for TensorFlow 2.4.4, 2.5.2, 2.6.1, and included in 2.7.0