Arm NN deserializer stack buffer overflow proof-of-concept (CWE-787)
This repository contains a single proof-of-concept file, poc.armnn (296 bytes), used for coordinated disclosure of a stack-based buffer overflow in the Arm NN deserializer (armnnDeserializer::ToTensorInfo). It is a security research artifact. Loading the file triggers a memory-safety crash during deserialization. It performs no code execution and has no effect other than crashing the process that loads it.
File
poc.armnn: a serialized Arm NN graph (armnnSerializerflatbuffers schema) with a singleInputLayerwhose output tensor declares adimensionSpecificityvector of length 64. The deserializer copies that vector into a fixed 5-element stack array (bool[armnn::MaxNumOfTensorDimensions]) without a bounds check.
Trigger
Loading the file through the public deserializer API crashes:
auto d = armnnDeserializer::IDeserializer::Create();
d->CreateNetworkFromBinary(bytes_of_poc_armnn); // stack-buffer-overflow in ToTensorInfo
Under AddressSanitizer this reports a stack-buffer-overflow WRITE in armnnDeserializer::ToTensorInfo (Deserializer.cpp:756), reached from CreateNetworkFromBinary -> CreateNetworkFromGraph -> SetupInputLayers -> ToTensorInfo. The file is a structurally valid flatbuffers buffer and passes the deserializer's Verifier.
Scope and safety
This file only crashes the loader. Do not load it with an Arm NN build you depend on. It is intended for controlled reproduction of the vulnerability during disclosure.