Moderate severityNVD Advisory· Published Nov 18, 2022· Updated Apr 22, 2025
`CHECK` fail via inputs in `PyFunc` in Tensorflow
CVE-2022-41908
Description
TensorFlow is an open source platform for machine learning. An input token that is not a UTF-8 bytestring will trigger a CHECK fail in tf.raw_ops.PyFunc. We have patched the issue in GitHub commit 9f03a9d3bafe902c1e6beb105b2f24172f238645. 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
19f03a9d3bafeReplace CHECK with returning an InternalError on failing to create python tuple
2 files changed · +18 −3
tensorflow/python/lib/core/py_func.cc+7 −3 modified@@ -83,8 +83,8 @@ bool IsCPUDevice(const Device* d) { return d == nullptr || d->tensorflow_accelerator_device_info() == nullptr; } -// Givens the 'call', prepares the token and inputs as a python tuple -// that is appropriate for calling the trampoline. +// Given the 'call', prepares the token and inputs as a python tuple that is +// appropriate for calling the trampoline. Status MakeArgTuple(const PyCall* call, TFE_Context* ctx, PyObject** tuple) { int64_t n = call->ins.size(); PyObject* lst = PyList_New(n); @@ -119,7 +119,11 @@ Status MakeArgTuple(const PyCall* call, TFE_Context* ctx, PyObject** tuple) { PyList_SetItem(lst, i, arg); } *tuple = Py_BuildValue("(ssN)", call->token.c_str(), device_name, lst); - CHECK(*tuple); + if (*tuple == nullptr) { + return errors::Internal( + "Failed to create python tuple. Please make sure `token` is a " + "well-formed UTF-8 string."); + } return OkStatus(); }
tensorflow/python/ops/script_ops_test.py+11 −0 modified@@ -17,7 +17,9 @@ from tensorflow.python.eager import def_function from tensorflow.python.framework import constant_op from tensorflow.python.framework import dtypes +from tensorflow.python.framework import errors from tensorflow.python.framework import test_util +from tensorflow.python.ops import gen_script_ops from tensorflow.python.ops import resource_variable_ops from tensorflow.python.ops import script_ops from tensorflow.python.ops.script_ops import numpy_function @@ -103,6 +105,15 @@ def plus(a, b): expect_result = constant_op.constant(3, dtypes.int32) self.assertAllEqual(actual_result, expect_result) + @test_util.run_in_graph_and_eager_modes + def test_fail_on_non_utf8_token(self): + value = constant_op.constant(value=[1, 2]) + token = b"\xb0" + data_type = [dtypes.int32] + with self.assertRaises((errors.InternalError, UnicodeDecodeError)): + self.evaluate( + gen_script_ops.py_func(input=[value], token=token, Tout=data_type)) + 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-mv77-9g28-cwg3ghsaADVISORY
- nvd.nist.gov/vuln/detail/CVE-2022-41908ghsaADVISORY
- github.com/tensorflow/tensorflow/blob/master/tensorflow/python/lib/core/py_func.ccghsaWEB
- github.com/tensorflow/tensorflow/commit/9f03a9d3bafe902c1e6beb105b2f24172f238645ghsaWEB
- github.com/tensorflow/tensorflow/security/advisories/GHSA-mv77-9g28-cwg3ghsaWEB
News mentions
0No linked articles in our index yet.