ONNX: Out-of-Bounds Read in RNN/GRU/LSTM Shape Inference (Old Opsets, Missing Rank Check)
Impact
ONNX versions through 1.21.0 have an out-of-bounds read vulnerability in RNN/GRU/LSTM shape inference for opsets 1-6, allowing denial of service via a crafted model. The vulnerability requires local access to process a malicious model. The impact is limited to termination of the process.
Summarized by @cf/meta/llama-3.3-70b-instruct-fp8-fast. Verify details against the original sources.Exploitation does not require privileges or human interaction once the model is processed.
Affected packages
Start with the recorded fix for your release branch. Check your installed version and test compatibility before upgrading. Fixing this advisory does not rule out other vulnerabilities in the release.
| Affected range | Recorded fix |
|---|---|
| Earlier releases before 1.22.0Ecosystem versions | 1.22.0 |
Version evidence: OSV · GHSA-48m4-24cq-37qf
View original version evidence (50 explicit versions)
Affected products
Vendor version evidence. Product records are separate from automatic dependency matching.
onnx · GitHub_M
onnx
1 range
onnx · GitHub_M
onnx
Compare with this publisher’s ranges. This does not inspect your installation.
affected
< 1.22.0
Other versions: unknown
Original source description
Summary
ONNX shape inference performed an out-of-bounds read when processing a malformed RNN, GRU, or LSTM node from opsets 1–6 whose first input had a rank other than three.
RNNShapeInference_opset1_to_6() checked whether the input shape was present but accessed dim(0) and dim(1) without first checking its rank. A crafted model could therefore terminate a process that called onnx.shape_inference.infer_shapes(). The model passed onnx.checker.check_model() before reaching the vulnerable path.
Technical details
The vulnerable code read dimensions unconditionally:
if (hasInputShape(ctx, 0)) {
const auto& first_input_shape = getInputShape(ctx, 0);
seq_length = first_input_shape.dim(0);
batch_size = first_input_shape.dim(1);
}
For an undersized shape, protobuf's repeated-field access read outside the intended array in release builds. The observed result was SIGSEGV; sanitizer and debug builds terminated on a protobuf bounds check.
The newer opset 7–13 and opset 14+ inference paths already required the first input to have rank three and were not affected.
Impact
An application that performs shape inference on an untrusted model can be terminated, causing denial of service. Exploitation does not require privileges or human interaction once the model is processed. No confidentiality or integrity impact was demonstrated.
Affected versions
- Affected: ONNX through 1.21.0
- Patched: ONNX 1.22.0
The vulnerable schemas are limited to RNN and LSTM opsets 1–6 and GRU opsets 3–6.
Remediation
Upgrade to ONNX 1.22.0 or later. The fix validates that the first input has rank three before accessing its dimensions.
- Fix: onnx/onnx#7879
- Commit:
92e541266
The original malformed model was also re-tested against the published ONNX 1.23.2 wheel and correctly raises InferenceError.
Severity
The vulnerable ONNX component processes the malicious model through a local library API or file boundary and is not itself bound to a network stack. Applications that expose ONNX model processing over a network should calculate an Environmental score with Modified Attack Vector set to Network.
Inside the record
Evidence available
Describes the evidence in this view, not whether the product is safe.
Original records
CVE-2026-115919View the latest unmodified CVE JSON from the official source. It may be newer than this imported page.
cve.new JSON →Underlying weaknesses
The source’s classification of what caused the vulnerability.
Contributing organizations · 2
Assigning organization
Additional data publisher
What changed
Follow changesLarge field values are marked as truncated previews. Original source snapshots remain retained.