Skip to content

Fix heap-buffer-overflow in glTF decoder accessor reads#1165

Open
Sebasteuo wants to merge 1 commit intogoogle:mainfrom
Sebasteuo:fix-gltf-oob-read
Open

Fix heap-buffer-overflow in glTF decoder accessor reads#1165
Sebasteuo wants to merge 1 commit intogoogle:mainfrom
Sebasteuo:fix-gltf-oob-read

Conversation

@Sebasteuo
Copy link
Copy Markdown

Add bounds validation to all glTF accessor data copy functions to prevent out-of-bounds heap reads when processing crafted .glb/.gltf files with malicious byteOffset, byteLength, or byteStride values.

The glTF decoder trusted accessor/bufferView fields from the input file without validating them against the actual buffer size. A crafted .glb file could cause memcpy to read past the end of the allocated buffer, leading to heap-buffer-overflow (confirmed via AddressSanitizer).

Affected functions:

  • TinyGltfUtils::CopyDataAsFloatImpl() in tiny_gltf_utils.h
  • CopyDataAsUint32() in gltf_decoder.cc
  • CopyDataAs() (both specializations) in gltf_decoder.cc
  • CopyDataFromBufferView() in gltf_decoder.cc

Add bounds validation to all glTF accessor data copy functions to
prevent out-of-bounds heap reads when processing crafted .glb/.gltf
files with malicious byteOffset, byteLength, or byteStride values.

The glTF decoder trusted accessor/bufferView fields from the input
file without validating them against the actual buffer size. A crafted
.glb file could cause memcpy to read past the end of the allocated
buffer, leading to heap-buffer-overflow (confirmed via AddressSanitizer).

Affected functions:
- TinyGltfUtils::CopyDataAsFloatImpl() in tiny_gltf_utils.h
- CopyDataAsUint32() in gltf_decoder.cc
- CopyDataAs<T>() (both specializations) in gltf_decoder.cc
- CopyDataFromBufferView() in gltf_decoder.cc
@google-cla
Copy link
Copy Markdown

google-cla bot commented Apr 1, 2026

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant