--- tags: - security - proof-of-concept - vulnerability-disclosure --- # 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 (`armnnSerializer` flatbuffers schema) with a single `InputLayer` whose output tensor declares a `dimensionSpecificity` vector 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: ```cpp 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.