🇰🇷 한글 설명
Open Neural Network Exchange(ONNX) 1.3.0부터 1.22.0 버전 사이에서 발생하며, opset 7에서 6으로 다운그레이드 시 Gemm 노드의 입력 텐서 차원을 확인하지 않아 경계 외 읽기(out-of-bounds read)가 발생할 수 있습니다. 이로 인해 B_shape[1], A_shape[0] 또는 A_shape[1]에 접근할 때 프로세스가 충돌할 가능성이 있습니다.
💡 쉬운 설명
머신러닝 모델의 버전을 변환하는 과정에서 데이터의 크기를 제대로 확인하지 않아 프로그램이 갑자기 꺼질 수 있는 문제입니다. 특정 조건의 데이터를 처리할 때 시스템이 오류를 일으키며 멈출 수 있습니다.
🇺🇸 원문 (English)
Open Neural Network Exchange (ONNX) is an open standard for machine learning interoperability. From 1.3.0 until 1.22.0, onnx.version_converter.convert_version() can perform an out-of-bounds read in Gemm_7_6::adapt_gemm_7_6() in onnx/version_converter/adapters/gemm_7_6.h when a Gemm node has input tensors with fewer than two dimensions because B_shape[1], A_shape[0], or A_shape[1] is accessed without a rank check, potentially causing a process crash during an opset 7 to 6 downgrade. This issue is fixed in version 1.22.0.
📍 영향받는 시스템
ONNX versions 1.3.0 to 1.22.0
⚔️ 공격 벡터
차원이 2개 미만인 입력 텐서를 포함한 Gemm 노드가 있는 모델을 사용하여 버전 변환(opset 7 to 6)을 시도할 때 발생
🛡️ 대응 방법
ONNX 라이브러리를 1.22.0 이상의 최신 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 버전이 1.22.0 미만이면 취약한 상태이며, 1.22.0 이상이면 안전합니다.
pip show onnx | grep Version