Skip to content
TensorFlowGHSA-7j3m-8g3c-9qqq

TensorFlow vulnerable to null-dereference in `mlir::tfg::TFOp::nameAttr`

Medium5.9CVE-2022-36014 · Published Sep 16, 2022 · updated Jul 13, 2026

GitHub advisory

Affected versions

PackageAffectedFixed in
tensorflow
PyPI
< 2.7.22.7.2
>= 2.8.0, < 2.8.12.8.1
>= 2.9.0, < 2.9.12.9.1
Details and references

### Impact When [`mlir::tfg::TFOp::nameAttr`](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/ir/importexport/graphdef_import.cc) receives null type list attributes, it crashes. ```cpp StatusOr<unsigned> GraphDefImporter::ArgNumType(const NamedAttrList &attrs, const OpDef::ArgDef &arg_def, SmallVectorImpl<Type> &types) { // Check whether a type list attribute is specified. if (!arg_def.type_list_attr().empty()) { if (auto v = attrs.get(arg_def.type_list_attr()).dyn_cast<ArrayAttr>()) { for (Attribute attr : v) { if (auto dtype = attr.dyn_cast<TypeAttr>()) { types.push_back(UnrankedTensorType::get(dtype.getValue())); } else { return InvalidArgument("Expected '", arg_def.type_list_attr(), "' to be a list of types"); } } return v.size(); } return NotFound("Type attr not found: ", arg_def.type_list_attr()); } unsigned num = 1; // Check whether a number attribute is specified. if (!arg_def.number_attr().empty()) { if (auto v = attrs.get(arg_def.number_attr()).dyn_cast<IntegerAttr>()) { num = v.getValue().getZExtValue(); } else { return NotFound("Type attr not found: ", arg_def.number_attr()); } } // Check for a type or type attribute. Type dtype; if (arg_def.type() != DataType::DT_INVALID) { TF_RETURN_IF_ERROR(ConvertDataType(arg_def.type(), b_, &dtype)); } else if (arg_def.type_attr().empty()) { return InvalidArgument("Arg '", arg_def.name(), "' has invalid type and no type attribute"); } else { if (auto v = attrs.get(arg_def.type_attr()).dyn_cast<TypeAttr>()) { dtype = v.getValue(); } else { return NotFound("Type attr not found: ", arg_def.type_attr()); } } types.append(num, UnrankedTensorType::get(dtype)); return num; } ``` ### Patches We have patched the issue in GitHub commits [3a754740d5414e362512ee981eefba41561a63a6](https://github.com/tensorflow/tensorflow/commit/3a754740d5414e362512ee981eefba41561a63a6) and [a0f0b9a21c9270930457095092f558fbad4c03e5](https://github.com/tensorflow/tensorflow/commit/a0f0b9a21c9270930457095092f558fbad4c03e5). The fix will be included in TensorFlow 2.10.0. We will also cherrypick this commit on TensorFlow 2.9.1, TensorFlow 2.8.1, and TensorFlow 2.7.2, as these are also affected and still in supported range. ### For more information Please consult [our security guide](https://github.com/tensorflow/tensorflow/blob/master/SECURITY.md) for more information regarding the security model and how to contact us with issues and questions.

CVSS 3.1
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
Severity from
GitHub (reviewed advisory)
Weakness
CWE-476
Also known as
BIT-tensorflow-2022-36014, CVE-2022-36014, PYSEC-2026-3129, PYSEC-2026-3292, PYSEC-2026-966

More TensorFlow advisories

All TensorFlow
DateAdvisory
Sep 162022TensorFlow vulnerable to `CHECK` fail in `Conv2DBackpropInput`
CVE-2022-35999Medium5.9fixed in 2.7.2, 2.8.1, 2.9.1
Sep 162022TensorFlow vulnerable to `CHECK` fail in `tf.sparse.cross`
CVE-2022-35997Medium5.9fixed in 2.7.2, 2.8.1, 2.9.1
Sep 162022TensorFlow vulnerable to `CHECK` failure in `SobolSample` via missing validation
CVE-2022-35935Medium5.9fixed in 2.7.2, 2.8.1, 2.9.1
Sep 162022TensorFlow vulnerable to `CHECK` failure in tf.reshape via overflows
CVE-2022-35934Medium5.9fixed in 2.7.2, 2.8.1, 2.9.1
Sep 162022TensorFlow vulnerable to OOB read in `Gather_nd` in TF Lite
CVE-2022-35937High7.0fixed in 2.7.2, 2.8.1, 2.9.1
Sep 162022TensorFlow vulnerable to OOB write in `scatter_nd` in TF Lite
CVE-2022-35939High7.0fixed in 2.7.2, 2.8.1, 2.9.1

Critical advisories by email

Wednesdays: the week’s critical and high advisories in the AI and data stack, with the fixed versions. Only in weeks that have some.

Double opt-in. Unsubscribe any time.