Moderate severityNVD Advisory· Published Nov 18, 2022· Updated Apr 22, 2025
`FractionalMaxPoolGrad` Heap out of bounds read in Tensorflow
CVE-2022-41897
Description
TensorFlow is an open source platform for machine learning. If FractionMaxPoolGrad is given outsize inputs row_pooling_sequence and col_pooling_sequence, TensorFlow will crash. We have patched the issue in GitHub commit d71090c3e5ca325bdf4b02eb236cfb3ee823e927. The fix will be included in TensorFlow 2.11. We will also cherrypick this commit on TensorFlow 2.10.1, 2.9.3, and TensorFlow 2.8.4, as these are also affected and still in supported range.
Affected packages
Versions sourced from the GitHub Security Advisory.
| Package | Affected versions | Patched versions |
|---|---|---|
tensorflowPyPI | < 2.8.4 | 2.8.4 |
tensorflowPyPI | >= 2.9.0, < 2.9.3 | 2.9.3 |
tensorflowPyPI | >= 2.10.0, < 2.10.1 | 2.10.1 |
tensorflow-cpuPyPI | < 2.8.4 | 2.8.4 |
tensorflow-gpuPyPI | < 2.8.4 | 2.8.4 |
tensorflow-cpuPyPI | >= 2.9.0, < 2.9.3 | 2.9.3 |
tensorflow-gpuPyPI | >= 2.9.0, < 2.9.3 | 2.9.3 |
tensorflow-cpuPyPI | >= 2.10.0, < 2.10.1 | 2.10.1 |
tensorflow-gpuPyPI | >= 2.10.0, < 2.10.1 | 2.10.1 |
Affected products
1- Range: >= 2.10.0, < 2.10.1
Patches
1d71090c3e5caFix security vulnerability with FractionalMaxPoolGrad
2 files changed · +31 −1
tensorflow/core/kernels/fractional_max_pool_op.cc+12 −0 modified@@ -258,6 +258,18 @@ class FractionalMaxPoolGradOp : public OpKernel { OP_REQUIRES(context, tensor_out.NumElements() > 0, errors::InvalidArgument("orig_output must not be empty, got ", tensor_out.DebugString())); + OP_REQUIRES( + context, + height_seq_tensor.NumElements() * width_seq_tensor.NumElements() <= + tensor_in.NumElements(), + errors::InvalidArgument( + "Pooling region has more elements than the input tensor. " + "row_pooling_sequence: ", + height_seq_tensor.DebugString(), + "col_pooling_sequence: ", width_seq_tensor.DebugString(), + "orig_input: ", tensor_in.DebugString())); + + // std::vector<int64_t> input_size(tensor_in_and_out_dims); std::vector<int64_t> output_size(tensor_in_and_out_dims); for (int i = 0; i < tensor_in_and_out_dims; ++i) {
tensorflow/python/kernel_tests/nn_ops/fractional_max_pool_op_test.py+19 −1 modified@@ -632,7 +632,7 @@ def testWhenRepeatedMaxValueInPoolingRegion(self): def testInvalidSeqRaiseErrorForFractionalMaxPoolGrad(self): with self.assertRaises(errors.InvalidArgumentError): - with self.cached_session() as _: + with self.cached_session(): overlapping = True orig_input = constant_op.constant( .453409232, shape=[1, 7, 13, 1], dtype=dtypes.float32) @@ -653,6 +653,24 @@ def testInvalidSeqRaiseErrorForFractionalMaxPoolGrad(self): overlapping=overlapping) self.evaluate(t) + def testOverLargeSeqRaiseErrorForFractionalMaxPoolGrad(self): + with self.assertRaises(errors.InvalidArgumentError): + with self.cached_session(): + overlapping = False + orig_input = [[[[1, 1, 1, 1, 1]]]] + orig_output = [[[[1, 1, 1]]]] + out_backprop = [[[[3], [3], [6]]]] + row_pooling_sequence = [-0x4000000, 1, 1] + col_pooling_sequence = [-0x4000000, 1, 1] + t = gen_nn_ops.FractionalMaxPoolGrad( + orig_input=orig_input, + orig_output=orig_output, + out_backprop=out_backprop, + row_pooling_sequence=row_pooling_sequence, + col_pooling_sequence=col_pooling_sequence, + overlapping=overlapping) + self.evaluate(t) + if __name__ == "__main__": test.main()
Vulnerability mechanics
Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
5- github.com/advisories/GHSA-f2w8-jw48-fr7jghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2022-41897ghsaADVISORY
- github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/fractional_max_pool_op.ccghsaWEB
- github.com/tensorflow/tensorflow/commit/d71090c3e5ca325bdf4b02eb236cfb3ee823e927ghsaWEB
- github.com/tensorflow/tensorflow/security/advisories/GHSA-f2w8-jw48-fr7jghsaWEB
News mentions
0No linked articles in our index yet.