UNILESS's picture
add model card metadata
87a83e5 verified
|
Raw
History Blame Contribute Delete
1.64 kB
metadata
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:

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.