🇰🇷 한글 설명
TensorFlow의 TFLite 연산 과정 중 패딩 후 출력 크기를 계산하는 ComputeOutSize 함수에서 stride 인자가 0인지 확인하지 않는 취약점이 발견되었습니다. 공격자가 stride를 0으로 설정한 특수 모델을 제작할 경우 0으로 나누기 오류가 발생할 수 있습니다.
💡 쉬운 설명
머신러닝 모델을 계산할 때 숫자를 0으로 나누는 실수가 발생할 수 있는 보안 약점입니다. 악의적으로 만들어진 모델을 실행하면 프로그램이 갑자기 멈추거나 오류가 날 수 있습니다.
🇺🇸 원문 (English)
TensorFlow is an end-to-end open source platform for machine learning. The TFLite computation for size of output after padding, `ComputeOutSize`(https://github.com/tensorflow/tensorflow/blob/0c9692ae7b1671c983569e5d3de5565843d500cf/tensorflow/lite/kernels/padding.h#L43-L55), does not check that the `stride` argument is not 0 before doing the division. Users can craft special models such that `ComputeOutSize` is called with `stride` set to 0. 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 포함)
⚔️ 공격 벡터
stride 값이 0으로 설정된 특수하게 제작된 TensorFlow Lite 모델 파일을 실행함
🛡️ 대응 방법
TensorFlow를 2.5.0 이상의 최신 버전으로 업데이트합니다.
🔧 검증 코드
출력된 버전 번호가 2.5.0보다 낮은지 확인합니다.
python3 -c 'import tensorflow as tf; print(tf.__version__)'