In Arm ArmNN through 2026-03-27, an integer overflow in TensorShape::GetNumElements() in armnn/Tensor.cpp allows a crafted TFLite model file to bypass buffer size validation and trigger a heap-based buffer over-read during model optimization. The overflow occurs when multiplying tensor dimensions using 32-bit unsigned arithmetic without overflow detection, causing GetNumBytes() to return an understated allocation size. During Optimize()->InferOutputShapes(), the BatchToSpaceNdLayer reads beyond the allocated buffer.
{
"binaries": [
{
"binary_name": "libarmnn-cpuacc-backend22",
"binary_version": "20.08-10build1"
},
{
"binary_name": "libarmnn-cpuref-backend22",
"binary_version": "20.08-10build1"
},
{
"binary_name": "libarmnn-gpuacc-backend22",
"binary_version": "20.08-10build1"
},
{
"binary_name": "libarmnn22",
"binary_version": "20.08-10build1"
},
{
"binary_name": "libarmnnaclcommon22",
"binary_version": "20.08-10build1"
},
{
"binary_name": "libarmnntfliteparser22",
"binary_version": "20.08-10build1"
},
{
"binary_name": "python3-pyarmnn",
"binary_version": "20.08-10build1"
}
]
}
{
"binaries": [
{
"binary_name": "armnn-latest-all",
"binary_version": "23.08-4.1build1"
},
{
"binary_name": "armnn-latest-cpu",
"binary_version": "23.08-4.1build1"
},
{
"binary_name": "armnn-latest-cpu-gpu",
"binary_version": "23.08-4.1build1"
},
{
"binary_name": "armnn-latest-cpu-gpu-ref",
"binary_version": "23.08-4.1build1"
},
{
"binary_name": "armnn-latest-gpu",
"binary_version": "23.08-4.1build1"
},
{
"binary_name": "armnn-latest-ref",
"binary_version": "23.08-4.1build1"
},
{
"binary_name": "libarmnn-cpuacc-backend33",
"binary_version": "23.08-4.1build1"
},
{
"binary_name": "libarmnn-cpuref-backend33",
"binary_version": "23.08-4.1build1"
},
{
"binary_name": "libarmnn-gpuacc-backend33",
"binary_version": "23.08-4.1build1"
},
{
"binary_name": "libarmnn33t64",
"binary_version": "23.08-4.1build1"
},
{
"binary_name": "libarmnnaclcommon33t64",
"binary_version": "23.08-4.1build1"
},
{
"binary_name": "libarmnntfliteparser24t64",
"binary_version": "23.08-4.1build1"
},
{
"binary_name": "python3-pyarmnn",
"binary_version": "23.08-4.1build1"
}
]
}
{
"binaries": [
{
"binary_name": "armnn-latest-all",
"binary_version": "23.08-5"
},
{
"binary_name": "armnn-latest-cpu",
"binary_version": "23.08-5"
},
{
"binary_name": "armnn-latest-cpu-gpu",
"binary_version": "23.08-5"
},
{
"binary_name": "armnn-latest-cpu-gpu-ref",
"binary_version": "23.08-5"
},
{
"binary_name": "armnn-latest-gpu",
"binary_version": "23.08-5"
},
{
"binary_name": "armnn-latest-ref",
"binary_version": "23.08-5"
},
{
"binary_name": "libarmnn-cpuacc-backend33",
"binary_version": "23.08-5"
},
{
"binary_name": "libarmnn-cpuref-backend33",
"binary_version": "23.08-5"
},
{
"binary_name": "libarmnn-gpuacc-backend33",
"binary_version": "23.08-5"
},
{
"binary_name": "libarmnn33t64",
"binary_version": "23.08-5"
},
{
"binary_name": "libarmnnaclcommon33t64",
"binary_version": "23.08-5"
},
{
"binary_name": "libarmnntfliteparser24t64",
"binary_version": "23.08-5"
},
{
"binary_name": "python3-pyarmnn",
"binary_version": "23.08-5"
}
]
}