Skip to content

Integer overflow in TFLite array creation

High severity GitHub Reviewed Published Feb 2, 2022 in tensorflow/tensorflow • Updated Feb 3, 2023

Package

pip tensorflow (pip)

Affected versions

< 2.5.3
>= 2.6.0, < 2.6.3
= 2.7.0

Patched versions

2.5.3
2.6.3
2.7.1
pip tensorflow-cpu (pip)
< 2.5.3
>= 2.6.0, < 2.6.3
= 2.7.0
2.5.3
2.6.3
2.7.1
pip tensorflow-gpu (pip)
< 2.5.3
>= 2.6.0, < 2.6.3
= 2.7.0
2.5.3
2.6.3
2.7.1

Description

Impact

An attacker can craft a TFLite model that would cause an integer overflow in TfLiteIntArrayCreate:

TfLiteIntArray* TfLiteIntArrayCreate(int size) {
  int alloc_size = TfLiteIntArrayGetSizeInBytes(size);
  // ...
  TfLiteIntArray* ret = (TfLiteIntArray*)malloc(alloc_size);
  // ...
} 

The TfLiteIntArrayGetSizeInBytes returns an int instead of a size_t:

int TfLiteIntArrayGetSizeInBytes(int size) {
  static TfLiteIntArray dummy;

  int computed_size = sizeof(dummy) + sizeof(dummy.data[0]) * size;
#if defined(_MSC_VER)
  // Context for why this is needed is in http://b/189926408#comment21
  computed_size -= sizeof(dummy.data[0]);
#endif
  return computed_size;
}

An attacker can control model inputs such that computed_size overflows the size of int datatype.

Patches

We have patched the issue in GitHub commit a1e1511dde36b3f8aa27a6ec630838e7ea40e091.

The fix will be included in TensorFlow 2.8.0. We will also cherrypick this commit on TensorFlow 2.7.1, TensorFlow 2.6.3, and TensorFlow 2.5.3, as these are also affected and still in supported range.

For more information

Please consult our security guide for more information regarding the security model and how to contact us with issues and questions.

Attribution

This vulnerability has been reported by Wang Xuan of Qihoo 360 AIVul Team.

References

@mihaimaruseac mihaimaruseac published to tensorflow/tensorflow Feb 2, 2022
Reviewed Feb 3, 2022
Published by the National Vulnerability Database Feb 4, 2022
Published to the GitHub Advisory Database Feb 9, 2022
Last updated Feb 3, 2023

Severity

High
7.6
/ 10

CVSS base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
Low
User interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
Low
Availability
High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:H

Weaknesses

CVE ID

CVE-2022-23558

GHSA ID

GHSA-9gwq-6cwj-47h3
Checking history
See something to contribute? Suggest improvements for this vulnerability.