Headline
CVE-2022-41883: Fix OOB error when op input sizes do not match. · tensorflow/tensorflow@f5381e0
TensorFlow is an open source platform for machine learning. When ops that have specified input sizes receive a differing number of inputs, the executor will crash. We have patched the issue in GitHub commit f5381e0e10b5a61344109c1b7c174c68110f7629. 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.
Permalink
Browse files
Fix OOB error when op input sizes do not match.
In cases where op input sizes are specified as in ``` REGISTER_OP(“DynamicStitch”) .Input(“indices: N * int32”) .Input(“data: N * T”) .Output(“merged: T”) .Attr(“N : int >= 1”) .Attr(“T : type”) .SetShapeFn(DynamicStitchShapeFunction); ``` if differing number of inputs are provided (e.g. 3 for `indices` and 4 for `data`) we can get a crash in the executor when parsing the inputs, even before the kernel called. Here we avoid this by checking the return code for the argument id and exit early.
PiperOrigin-RevId: 478068540
- Loading branch information
Related news
### Impact [`tf.raw_ops.DynamicStitch`](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/kernels/dynamic_stitch_op.cc) specifies input sizes when it is [registered](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/ops/data_flow_ops.cc). ```cpp REGISTER_OP("DynamicStitch") .Input("indices: N * int32") .Input("data: N * T") .Output("merged: T") .Attr("N : int >= 1") .Attr("T : type") .SetShapeFn(DynamicStitchShapeFunction); ``` When it receives a differing number of inputs, such as when it is called with an `indices` size 1 and a `data` size 2, it will crash. ```python import tensorflow as tf # indices = 1*[tf.random.uniform([1,2], dtype=tf.dtypes.int32, maxval=100)] indices = [tf.constant([[0, 1]]),] # data = 2*[tf.random.uniform([1,2], dtype=tf.dtypes.float32, maxval=100)] data = [tf.constant([[5, 6]]), tf.constant([[7, 8]])] tf.raw_ops.DynamicStitch( indices=indices, data=data) ``` ### Patches We have patch...