CVE-2026-115922
Medium · 6.2CVSS
6.2
EPSS
—
Published
Oct 26, 2026
CISA due date
—
Cloudanix analysis
A bug in the ONNX machine-learning library lets attackers crash programs that read specially crafted model files by making those programs try to use far more memory than is available.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Library
- Class
- Improper Input Validation
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
The flaw permits an attacker-controlled TensorProto.dims value to dictate the size of unpacked arrays in _unpack_2bit() and _unpack_4bit() without validating that the supplied raw_data or int32_data contains the declared element count, enabling a small payload for UINT2/INT2/UINT4/INT4/FLOAT4E2M1 tensors to trigger a disproportionately large memory allocation when materialized through onnx.numpy_helper.to_array() or onnx.reference.ReferenceEvaluator.
Why it matters to the business
Processing of untrusted ONNX models can exhaust memory and crash machine-learning applications or services, resulting in denial of service, pipeline failures, and operational disruption; the issue is four days old with no observed exploitation or ransomware use.
How an attack unfolds
An attacker creates an ONNX model containing a quantized tensor whose dims field declares a very large element count while the corresponding packed data remains small, then supplies the model to any application that invokes to_array() or ReferenceEvaluator on it, causing the library to allocate a massive array and exhaust available memory.
How to fix it
Upgrade the ONNX package to version 1.22.0 or later, which adds verification that the packed data length matches the declared dims before allocation; validate all model sources and consider sandboxing or resource limits on model processing until upgraded.
How to confirm the fix worked
Confirm the installed ONNX version is 1.22.0 or newer; attempt to load a test model containing an undersized payload with oversized dims and verify that an exception or rejection occurs instead of a large allocation.
Typical attack path
- Construct ONNX model with attacker-chosen large dims and undersized raw_data/int32_data for 2-bit or 4-bit tensor
- Deliver the model file to a target that uses onnx.numpy_helper.to_array() or ReferenceEvaluator
- Trigger deserialization or evaluation of the tensor
- Induce out-of-memory condition and application crash
How to detect it
Watch application and system logs for abrupt out-of-memory errors or sudden memory spikes coinciding with ONNX model loading; inspect process traces for calls to _unpack_2bit, _unpack_4bit, to_array, or ReferenceEvaluator immediately before resource exhaustion.
What your security team should do
- Upgrade ONNX to 1.22.0 or later across all environments
- Reject or sanitize ONNX models originating from untrusted sources
- Apply memory limits and monitoring to processes that load ONNX models
- Review ML pipelines for direct use of numpy_helper.to_array() or ReferenceEvaluator on external input
The record
Open Neural Network Exchange (ONNX) is an open standard for machine learning interoperability. Prior to 1.22.0, _unpack_2bit() and _unpack_4bit() resize unpacked arrays according to attacker-controlled TensorProto.dims without verifying that raw_data or int32_data encodes the declared number of elements. Materializing an untrusted UINT2, INT2, UINT4, INT4, or FLOAT4E2M1 tensor through onnx.numpy_helper.to_array() or onnx.reference.ReferenceEvaluator can therefore expand a small packed payload into a disproportionately large allocation and exhaust memory. This issue is fixed in version 1.22.0.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-62297 ag-psd is a JavaScript library for reading and writing Photoshop Document files. CWE-789
- CVE-2026-62254 LibreDWG is a free C library to read and write DWG files. CWE-789
- CVE-2026-61845 Crass is a Ruby CSS parser that's fully compliant with the CSS Syntax Level 3… CWE-789
- CVE-2026-115865 Starlet versions before 0.33 for Perl allow a request declaring a large Content-Length to… CWE-789
- CVE-2026-119280 MariaDB Connector/J is used to connect applications developed in Java to MariaDB and… CWE-789
- CVE-2026-119278 MariaDB Connector/J is used to connect applications developed in Java to MariaDB and… CWE-789
- CVE-2026-119276 MariaDB Connector/J is used to connect applications developed in Java to MariaDB and… CWE-789
- CVE-2026-118590 A security vulnerability has been detected in nipy nibabel up to 5.4.2. CWE-789