VYPR
Moderate severityNVD Advisory· Published May 14, 2021· Updated Aug 3, 2024

Integer overflow in TFLite memory allocation

CVE-2021-29605

Description

TensorFlow is an end-to-end open source platform for machine learning. The TFLite code for allocating TFLiteIntArrays is vulnerable to an integer overflow issue(https://github.com/tensorflow/tensorflow/blob/4ceffae632721e52bf3501b736e4fe9d1221cdfa/tensorflow/lite/c/common.c#L24-L27). An attacker can craft a model such that the size multiplier is so large that the return value overflows the int datatype and becomes negative. In turn, this results in invalid value being given to malloc(https://github.com/tensorflow/tensorflow/blob/4ceffae632721e52bf3501b736e4fe9d1221cdfa/tensorflow/lite/c/common.c#L47-L52). In this case, ret->size would dereference an invalid pointer. The fix will be included in TensorFlow 2.5.0. We will also cherrypick this commit on TensorFlow 2.4.2, TensorFlow 2.3.3, TensorFlow 2.2.3 and TensorFlow 2.1.4, as these are also affected and still in supported range.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
tensorflowPyPI
< 2.1.42.1.4
tensorflowPyPI
>= 2.2.0, < 2.2.32.2.3
tensorflowPyPI
>= 2.3.0, < 2.3.32.3.3
tensorflowPyPI
>= 2.4.0, < 2.4.22.4.2
tensorflow-cpuPyPI
< 2.1.42.1.4
tensorflow-cpuPyPI
>= 2.2.0, < 2.2.32.2.3
tensorflow-cpuPyPI
>= 2.3.0, < 2.3.32.3.3
tensorflow-cpuPyPI
>= 2.4.0, < 2.4.22.4.2
tensorflow-gpuPyPI
< 2.1.42.1.4
tensorflow-gpuPyPI
>= 2.2.0, < 2.2.32.2.3
tensorflow-gpuPyPI
>= 2.3.0, < 2.3.32.3.3
tensorflow-gpuPyPI
>= 2.4.0, < 2.4.22.4.2

Affected products

1

Patches

1
7c8cc4ec69cd

Fix a dangerous integer overflow and a malloc of negative size.

https://github.com/tensorflow/tensorflowMihai MaruseacApr 30, 2021via ghsa
2 files changed · +5 2
  • tensorflow/lite/c/common.c+4 2 modified
    @@ -45,8 +45,10 @@ int TfLiteIntArrayEqualsArray(const TfLiteIntArray* a, int b_size,
     #ifndef TF_LITE_STATIC_MEMORY
     
     TfLiteIntArray* TfLiteIntArrayCreate(int size) {
    -  TfLiteIntArray* ret =
    -      (TfLiteIntArray*)malloc(TfLiteIntArrayGetSizeInBytes(size));
    +  int alloc_size = TfLiteIntArrayGetSizeInBytes(size);
    +  if (alloc_size <= 0) return NULL;
    +  TfLiteIntArray* ret = (TfLiteIntArray*)malloc(alloc_size);
    +  if (!ret) return ret;
       ret->size = size;
       return ret;
     }
    
  • tensorflow/lite/kernels/embedding_lookup_sparse.cc+1 0 modified
    @@ -173,6 +173,7 @@ TfLiteStatus Eval(TfLiteContext* context, TfLiteNode* node) {
     
       // Resize output tensor.
       TfLiteIntArray* output_shape = TfLiteIntArrayCreate(output_rank);
    +  TF_LITE_ENSURE(context, output_shape != nullptr);
       int k = 0;
       int embedding_size = 1;
       int lookup_size = 1;
    

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

8

News mentions

0

No linked articles in our index yet.