YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
TensorRT GroupNormalizationPlugin Serialized State Bypass PoC
This repository contains a minimal TensorRT MFV proof of concept for silent inference output manipulation through the GroupNormalizationPlugin serialized plugin state.
Files:
control_groupnorm.engine- TensorRT engine built witheps=1e-5,num_groups=2.malicious_eps_huge_groupnorm.engine- same engine with the serializedmEpsilonfield patched to1000000.0.malicious_groups_one_groupnorm.engine- same engine with serializedmNbGroupspatched from2to1.verify_groupnorm.py- loads each engine, runs the same input, and compares output signatures.gpu0-evidence.json/gpu1-evidence.json- reproduction evidence from two RTX 4090 GPUs.
Expected result:
- all three engines deserialize successfully;
- all three engines execute successfully;
- all three outputs keep the same TensorRT output shape;
- both malicious engines return different normalized activations from the control engine.
Example:
python3 -m venv .venv
. .venv/bin/activate
python -m pip install tensorrt==11.1.0.106 nvidia-cudnn-cu12==8.9.7.29
export LD_LIBRARY_PATH="$VIRTUAL_ENV/lib/python3.12/site-packages/nvidia/cudnn/lib:$LD_LIBRARY_PATH"
python verify_groupnorm.py --gpu 0 --strict
On the reporter's RTX 4090 lab, the control output begins:
[-1.527524, -1.091089, -0.654653, -0.218218, 0.218218, 0.654653]
The eps=1000000.0 malicious output begins:
[-0.0035, -0.0025, -0.0015, -0.0005, 0.0005, 0.0015]
The num_groups=1 malicious output begins:
[-1.626978, -1.410048, -1.193117, -0.976187, -0.759256, -0.542326]
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support