🇰🇷 한글 설명
ONNX(Open Neural Network Exchange) 1.2.1부터 1.22.0 이전까지 ConvTranspose 형상 추론에서, kernel_shape 속성이 없고 차원이 3개 미만인 가중치 텐서를 처리할 때 빈 effective_kernel_shape를 생성하고 이를 입력의 공간 차원으로 인덱싱하는 결함이 존재합니다. onnx.checker.check_model()을 통과하는 신뢰할 수 없는 모델이 onnx.shape_inference.infer_shapes()를 크래시시켜 서비스 거부(DoS)를 유발할 수 있으며, 기밀성이나 무결성 영향은 확인되지 않았습니다. 해당 문제는 1.22.0 버전에서 수정되었습니다.
💡 쉬운 설명
머신러닝 모델 교환 도구 ONNX에 모델 형상 분석 시 잘못된 처리로 프로그램이 멈추는 문제가 있습니다. 악의적으로 조작된 모델 파일을 처리하면 서비스가 중단될 수 있지만 데이터 유출은 확인되지 않았습니다.
🇺🇸 원문 (English)
Open Neural Network Exchange (ONNX) is an open standard for machine learning interoperability. From 1.2.1 until 1.22.0, ConvTranspose shape inference processes a weight tensor with fewer than three dimensions without a kernel_shape attribute by deriving an empty effective_kernel_shape and indexing it for the input's spatial dimensions. The flaw affects convTransposeShapeInference_opset11() and the current inference path, and an untrusted model that can pass onnx.checker.check_model() can crash onnx.shape_inference.infer_shapes(), causing denial of service without demonstrated confidentiality or integrity impact. This issue is fixed in version 1.22.0.
📍 영향받는 시스템
ONNX 1.2.1 이상 1.22.0 미만 버전 (onnx.shape_inference.infer_shapes 사용 환경)
⚔️ 공격 벡터
onnx.checker.check_model()을 통과하는 조작된 ONNX 모델 파일을 대상 시스템에서 형상 추론 처리하게 하여 프로세스 크래시 유발
🛡️ 대응 방법
onnx 패키지를 1.22.0 이상으로 업그레이드 (pip install --upgrade onnx>=1.22.0)
🔧 검증 코드
출력된 버전이 1.22.0 미만이면 취약하며, 1.22.0 이상이면 패치가 적용된 상태입니다.
pip show onnx 2>/dev/null | grep -i '^version'