← All finding types

unsafe_model_deserialization

CWE-502

Unsafe Model Deserialization — a PullGuard finding type. Findings of this type appear in the PR comment, Step Summary, SARIF (GitHub Security tab / IDE viewers), and the HTML report, each with severity, location, and the remediation guidance below.

How to fix

Load model weights safely — weights_only=True or safetensors; never trust_remote_code on a floating ref low effort

# Before (VULNERABLE): pickle deserialization of the model file
model = torch.load(path, weights_only=False)
lm = AutoModel.from_pretrained(repo, trust_remote_code=True)

# After (SAFE):
model = torch.load(path, weights_only=True)        # or safetensors.torch.load_file(path)
lm = AutoModel.from_pretrained(repo)               # native architecture
# If custom code is unavoidable: pin + audit the exact commit
lm = AutoModel.from_pretrained(repo, trust_remote_code=True, revision="<audited-commit-sha>")

Triage

Suppress a confirmed non-issue with a committed .pullguardignore entry (pullguard ignore locally, or comment /pullguard ignore <fingerprint> <reason> on the PR — the fingerprint is printed in the PR comment’s Triage section). Entries support expiresAt for time-boxed snoozes.

Security findings at major or critical severity — and any critical finding — always surface: .pullguardignore cannot hide them. The reviewed paths that keep them visible are acknowledged (reviewed, stays in reports) and, for a confirmed false positive, a reasoned false_positive entry — visible and audited, excluded only from the merge block.