🇰🇷 한글 설명
TensorFlow의 TFLite `GatherNd` 연산자 참조 구현에서 0으로 나누기 오류가 발생할 수 있는 취약점이 발견되었습니다. 공격자가 `params` 입력을 빈 텐서로 구성된 모델을 제작할 경우, 특정 차원의 크기가 0이 되어 시스템 오류를 유발할 수 있습니다.
💡 쉬운 설명
특수하게 조작된 인공지능 모델을 실행할 때, 계산 과정에서 0으로 나누는 수학적 오류가 발생하여 프로그램이 멈출 수 있는 문제입니다. 이는 악의적인 모델 파일을 통해 시스템의 안정성을 해칠 수 있습니다.
🇺🇸 원문 (English)
TensorFlow is an end-to-end open source platform for machine learning. The reference implementation of the `GatherNd` TFLite operator is vulnerable to a division by zero error(https://github.com/tensorflow/tensorflow/blob/0d45ea1ca641b21b73bcf9c00e0179cda284e7e7/tensorflow/lite/kernels/internal/reference/reference_ops.h#L966). An attacker can craft a model such that `params` input would be an empty tensor. In turn, `params_shape.Dims(.)` would be zero, in at least one dimension. The fix will be included in TensorFlow 2.5.0. We will also cherrypick this commit on TensorFlow 2.4.2, TensorFlow 2.3.3, TensorFlow 2.2.3 and TensorFlow 2.1.4, as these are also affected and still in supported range.
📍 영향받는 시스템
TensorFlow 2.5.0 미만 버전 (2.4.2, 2.3.3, 2.2.3, 2.1.4 포함)
⚔️ 공격 벡터
빈 텐서(empty tensor)를 포함하도록 정교하게 설계된 악성 TFLite 모델 파일을 실행함
🛡️ 대응 방법
TensorFlow를 2.5.0 이상의 최신 버전으로 업데이트하거나 해당 패치가 적용된 버전으로 업그레이드함
🔧 검증 코드
출력된 버전 번호가 2.5.0보다 낮은지 확인하여 취약 여부를 판단함
python3 -c 'import tensorflow as tf; print(tf.__version__)'