Safeguard
Vulnerability Analysis•

CVE-2026-28500: ONNX hub.load Trust Warnings Silenced

ONNX 1.20.1 and earlier let silent=True in onnx.hub.load() hide trust warnings for untrusted repos. Remove silent loading and watch for a fixed release.

Safeguard Security Team
3 min read

CVE-2026-28500 is a high severity (CVSS 8.6) weakness in ONNX through version 1.20.1. Passing silent=True to onnx.hub.load() suppresses every trust warning and prompt, so a model can come from an unverified repository without anyone noticing. The advisory lists 1.21.0rc1, where the feature was removed.

What's affected

The GitHub advisory lists the PyPI package onnx at 1.20.1 and earlier. Its first patched version is listed as 1.21.0rc1, and the resolution is described as removing the feature.

The NVD text says that at publication no patched versions were available, so check the project's release notes before you rely on a specific release.

You are only exposed if your code calls onnx.hub.load() with a repository other than the official one, and with silent=True.

How to check if you're exposed

Check the installed version:

pip show onnx

Then search your own code and notebooks for the risky call pattern:

grep -rn "hub.load" --include=*.py --include=*.ipynb .

Any call that passes an external repository string with silent=True deserves a closer look.

What to do now

  1. Find every use of onnx.hub.load() in code, notebooks and pipelines.
  2. Remove silent=True, and stop loading models from repositories you have not reviewed.
  3. Pin models to reviewed sources and verify them yourself, for example by mirroring approved models into storage you control.
  4. Upgrade onnx to a release that removes the feature, confirming the version in the advisory and release notes.

Why it matters

The record lists several related weakness classes, including CWE-345 (insufficient verification of data authenticity), CWE-494 (download of code without an integrity check), CWE-693 (protection mechanism failure) and CWE-829 (inclusion of functionality from an untrusted control sphere).

The advisory adds a second point: the SHA256 check in this path validates against a manifest that lives in the same repository, so an attacker who controls the repository controls the manifest too. The integrity check gives no protection against a malicious repo.

The description says the danger rises if a model can execute code on load. This is a supply chain issue in how models are fetched, which matters for ML pipelines that run unattended. The record does not mark it as exploited in the wild.

Try it yourself

Click through it at your own pace, or open it full screen.

Quick check

Is a call without silent=True safe?

The warning and prompt are the protection the function offers, so a call that shows them is better. Still, the advisory notes the hash check cannot defend against a repository the attacker controls, so avoid untrusted repositories altogether.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.