tensor / README.md
testamentaria's picture
Upload 2 files
c785adf verified
|
Raw
History Blame Contribute Delete
2.18 kB
---
license: mit
tags:
- security
- proof-of-concept
- tensorizer
---
# Tensorizer uninitialized-memory-disclosure PoC
This repository contains a proof-of-concept `.tensors` file for a responsibly-disclosed
vulnerability in [`coreweave/tensorizer`](https://github.com/coreweave/tensorizer) (tested at
commit `652d3c016c84836bba97153e108821c11428ac40`, version `2.12.1`), reported via huntr's
Model File Vulnerability program.
## What this file is
`malicious.tensors` is a syntactically valid Tensorizer file whose header/metadata index declares
one tensor (`poc_tensor`, 200,000 bytes of `float32` data), but whose data section has been
truncated to only 50,000 real bytes. The declared `data_length` for the tensor is left unchanged.
## What happens when you load it
```python
from tensorizer import TensorDeserializer
d = TensorDeserializer("malicious.tensors", verify_hash=False, lazy_load=False)
t = d["poc_tensor"] # succeeds -- no exception is raised
```
`TensorDeserializer` allocates the tensor's backing buffer with `torch.empty(...)` (uninitialized
memory) sized to the *declared* `data_length`, reads however many bytes are actually available
from the stream via `readinto()`, and never checks that the number of bytes read matches what was
requested. The 150,000 bytes that were never physically present in the file are left as whatever
was already sitting in that memory region of the host process — not zeroed, not an error.
Depending on what the host process had recently allocated, this can expose residual heap contents
(other in-process data) as if it were part of the loaded tensor's legitimate weights, with no
indication to the caller that anything is wrong.
See the reporter's full write-up submitted via huntr for the complete technical analysis,
including a reproduction that deliberately "dirties" the process heap with a recognizable byte
pattern beforehand and shows that pattern reappearing verbatim in the loaded tensor's data.
## Scope note
This PoC is provided solely for the purpose of responsible vulnerability disclosure and
reproduction by the `tensorizer` maintainers / huntr triage team. It is not intended for any other
use.