Description
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 products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
onnx onnx
< 1.22.0affected
References
- https://github.com/onnx/onnx/security/advisories/GHSA-q69g-f4f5-v8m7 ↗
- https://github.com/onnx/onnx/pull/8033 ↗
- https://github.com/onnx/onnx/pull/8038 ↗
- https://github.com/onnx/onnx/pull/8066 ↗
- https://github.com/onnx/onnx/commit/05c1bc3bceceb8d3cf11e9e7fc7f19f971c44988 ↗
- https://github.com/onnx/onnx/commit/8de2cf6aa47928e6515ac6d9e1a8b4758886a7df ↗
- https://github.com/onnx/onnx/commit/dce5876d6cc6cc30157af7d26a752ef44976da8e ↗
- https://github.com/onnx/onnx/releases/tag/v1.22.0 ↗