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.
https://github.com/onnx/onnx/security/advisories/GHSA-q69g-f4f5-v8m7
https://github.com/onnx/onnx/releases/tag/v1.22.0
https://github.com/onnx/onnx/pull/8066
https://github.com/onnx/onnx/pull/8038
https://github.com/onnx/onnx/pull/8033
https://github.com/onnx/onnx/commit/dce5876d6cc6cc30157af7d26a752ef44976da8e
https://github.com/onnx/onnx/commit/8de2cf6aa47928e6515ac6d9e1a8b4758886a7df
https://github.com/onnx/onnx/commit/05c1bc3bceceb8d3cf11e9e7fc7f19f971c44988