Instructions to use phenggeler/nemo-bypass-poc with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- NeMo
How to use phenggeler/nemo-bypass-poc with NeMo:
# tag did not correspond to a valid NeMo domain.
- Notebooks
- Google Colab
- Kaggle
YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
NVIDIA NeMo (.nemo) Scanner Bypass PoC
⚠️ Security Research — Gated Access Required
This repository demonstrates a dual scanner bypass affecting both modelscan and picklescan when processing NVIDIA NeMo model files.
Vulnerability Summary
Scanners: modelscan 0.8.7, picklescan 1.0.1
Impact: Complete dual scanner bypass enabling arbitrary code execution
Root Cause: .nemo files are tar.gz archives containing PyTorch checkpoints. Neither scanner recognizes .nemo as a supported format, nor does either scanner extract tar/tar.gz archives.
Technical Details
NeMo models (.nemo) are tar.gz archives typically containing:
model_weights.ckpt— PyTorch checkpoint (pickle-based)model_config.yaml— Model configuration
modelscan only recognizes .zip and .npz as container formats (supported_zip_extensions). .nemo/.tar.gz/.tar are completely ignored. picklescan similarly lacks tar support.
Scanner Results
| Scanner | Result |
|---|---|
| modelscan 0.8.7 | ✅ "No issues found!" |
| picklescan 1.0.1 | ✅ "Infected: 0" |
File
malicious_model.nemo— NeMo archive containing malicious PyTorch checkpoint withos.systempayload
Reproduction
import tarfile, torch, tempfile, os
# Extract NeMo archive
extract_dir = tempfile.mkdtemp()
with tarfile.open("malicious_model.nemo", "r:gz") as tar:
tar.extractall(extract_dir)
# Load checkpoint triggers ACE
model = torch.load(os.path.join(extract_dir, "model_weights.ckpt"), weights_only=False)
Disclosure
This vulnerability was reported through Huntr's responsible disclosure program.
- Downloads last month
- -