The issue is in onnx.load — the code checks for symlinks to prevent path traversal, but completely misses hardlinks, which is the problem, since a hardlink looks exactly like a regular file on the filesystem.
The validator in onnx/checker.cc only calls is_symlink() and never checks the inode or st_nlink, so a hardlink walks right through every security check without any issues.
Especially dangerous in AI supply chain scenarios like HuggingFace — a single malicious model is enough to silently steal secrets from the victim's machine without them noticing anything.
{
"github_reviewed": true,
"nvd_published_at": "2026-04-01T18:16:30Z",
"cwe_ids": [
"CWE-22",
"CWE-61"
],
"github_reviewed_at": "2026-04-01T21:13:37Z",
"severity": "MODERATE"
}