YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
modelscan-npz-object-pickle-blindspot
This repository contains a proof of concept for a scanner blind spot in .npz files containing object arrays.
Vulnerability
The included .npz file contains an object array with a harmless pickle payload.
Under NumPy:
numpy.load(..., allow_pickle=False)blocks object deserializationnumpy.load(..., allow_pickle=True)followed by access to the stored array triggers the payload
Under modelscan in the tested environment:
- the file returns 0 issues
- but the scanner does not actually analyze the inner
.npymember successfully - instead it errors on a NumPy private API mismatch and leaves the payload effectively unscanned
Primary PoC
The main PoC file is:
artifacts/payload.npz
The payload is harmless. When the unsafe object-pickle path is reached, it creates a local marker file:
NPZ_MARKER.txt
Included Files
artifacts/payload.npzartifacts/reproduce_output.txtartifacts/sha256sums.txtreproduce.py
Tested Environment
- Date tested: July 16, 2026
- Python: 3.13.12
- NumPy: 2.3.5
modelscan:protectai/modelscan@61fcec9c2a37c24c1fb12d84ede30fe248a364bd
Reproduction
1. Verify the included PoC
Run:
python reproduce.py
Expected results:
allow_pickle=Falseblocks object array accessallow_pickle=Trueplusobj["arr"]triggers the payloadmodelscanreturns zero issuesmodelscanalso reports an error for the inner.npymember instead of analyzing it
Observed Results
From artifacts/reproduce_output.txt:
allow_pickle_false_access: ValueError Object arrays cannot be loaded when allow_pickle=Falseallow_pickle_true_array: [0]marker_after_allow_pickle_true: Truemodelscan_issue_count: 0modelscan_errors:contains a NumPy private API error- skipped summary includes
payload.npz:arr.npy
Impact
This is a practical medium/low-value scanner blind spot for a less-common model format:
- the malicious payload is real and executes on the unsafe object-pickle path
modelscanproduces zero findings- the actual inner payload is not analyzed successfully in the tested environment
Notes
- This is not a clean silent bypass like the stronger
.jobliband.ptfindings. - The value here is that a malicious
.npzpayload remains effectively undetected under the tested scanner environment.
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support