GHSA-6pwm-x34p-fvj2: Medium severity pip/onnx vulnerability
Summary
ONNX ConvTranspose shape inference performed an out-of-bounds read when the weight tensor had fewer than three dimensions and the model did not provide a kernelshape attribute.
The inference function derived an empty effectivekernelshape vector from the undersized weight tensor, then indexed that vector once for each spatial dimension of the input tensor. A crafted model passed onnx.checker.checkmodel() and caused SIGSEGV when passed to onnx.shapeinference.infershapes().
Technical details
For an input shape such as [1, 1, 5], shape inference computes one spatial input dimension. A weight shape such as [1, 3] has no spatial dimensions, so deriving kernelshape from dimensions 2 onward produces an empty vector. The output loop nevertheless accesses effectivekernelshape[0].
The defect affected both the older convTransposeShapeInferenceopset11() path and the then-current ConvTranspose inference implementation.
Impact
An application that performs shape inference on an untrusted model can be terminated, causing denial of service. The observed result was a deterministic process crash. No confidentiality or integrity impact was demonstrated.
Affected versions
- Affected: ONNX 1.2.1 through 1.21.0 - Patched: ONNX 1.22.0
Remediation
Upgrade to ONNX 1.22.0 or later. The fix rejects input and weight tensors with fewer than three dimensions before deriving the spatial kernel shape.
- Fix: onnx/onnx#7997 - Commit: 2ec288908
The original malformed model was 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.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
pip/onnxto a version that resolves this vulnerability.Fixed in 1.22.0 - Upgrade
Upgrade
ONNXto a version that resolves this vulnerability.Fixed in 1.22.0
Event History
Frequently Asked Questions
Who is exposed to this issue?
Applications that run ONNX shape inference on untrusted models are exposed. A crafted model can cause a deterministic process crash, resulting in denial of service.
What does an attacker need to include in a model to trigger the crash?
The model needs a ConvTranspose node whose weight tensor has fewer than three dimensions and does not specify a kernel_shape attribute. For example, a one-spatial-dimension input combined with a two-dimensional weight shape causes shape inference to index an empty derived kernel-shape vector.
Can normal model validation detect the malicious input?
Not reliably. The crafted model described passed onnx.checker.check_model() and crashed when processed by onnx.shape_inference.infer_shapes().
What is the security impact of successful exploitation?
The demonstrated impact is denial of service through process termination by SIGSEGV. No confidentiality or integrity impact was demonstrated.