CVE-2026-49114
HighCVSS 7.1Exploitation Probability (EPSS)
Low risk1th percentile - higher than 1% of all known CVEs
Summary
ONNX before version 1.21.0 contains a vulnerability in the 'save_external_data' function that builds the external-data file path and opens it for writing without O_NOFOLLOW/O_EXCL, after a non-atomic 'os.path.isfile()' check. A local attacker can pre-plant a symlink, causing the victim's write to append to any file the victim can write.
Risk Assessment
An attacker can append data to files such as ~/.ssh/authorized_keys, cron files, or application configs, potentially leading to privilege escalation or system compromise.
Recommendation
Upgrade ONNX to version 1.21.0 or later, which includes a fix for the symlink vulnerability.
Other vulnerabilities in ONNX
See all- CVE-2026-63632Low
A vulnerability in the ONNX library from version 1.3.0 to 1.22.0 allows an out-of-bounds read in Gemm_7_6::adapt_gemm_7_6() during opset 7 to 6 downgrade when a Gemm node has input tensors with fewer than two dimensions. This can cause a process crash.
- CVE-2026-44512Medium
A vulnerability in the ONNX library (versions 1.9.0 through 1.22.0) allows a null pointer dereference in the Upsample_6_7::adapt_upsample_6_7() function when processing a malicious model with an Upsample node having zero inputs. This leads to an unrecoverable denial of service (DoS).
- CVE-2026-27489High
A path traversal vulnerability via symlink was found in the ONNX library before version 1.21.0. It allows reading arbitrary files outside the model or user-provided directory.
- CVE-2026-28500High
In ONNX library versions up to 1.20.1, a security control bypass exists in onnx.hub.load() due to improper logic in repository trust verification. Using the silent=True parameter suppresses all security warnings, enabling zero-interaction supply-chain attacks.
Original NVD description (English source)
In ONNX before 1.21.0, the 'save_external_data' function builds the external-data file path from the model's external_data location field and opens it for writing without 'O_NOFOLLOW/O_EXCL', after a non-atomic 'os.path.isfile()' check. A local attacker with write access to the directory where a victim serializes external data can deterministically pre-plant a symlink that is being followed, causing the victim's write to append to any file the victim can write, e.g. ~/.ssh/authorized_keys, cron files, or application configs. Fixed in 1.21.0.

