🇰🇷 한글 설명
TensorFlow의 TFLite `Minimum` 및 `Maximum` 연산자 구현에서 입력 텐서 중 하나가 비어 있을 경우 힙 할당 객체의 범위를 벗어난 데이터를 읽을 수 있는 취약점이 발견되었습니다. 이는 브로드캐스팅 구현 과정에서 인덱스 범위 검증이 누락되어 발생하며, 메모리 외부 데이터를 참조할 위험이 있습니다.
💡 쉬운 설명
머신러닝 도구인 TensorFlow에서 특정 계산을 할 때 데이터의 범위를 제대로 확인하지 않아 발생하는 문제입니다. 이로 인해 허용되지 않은 메모리 영역의 정보를 몰래 읽어갈 수 있는 위험이 있습니다.
🇺🇸 원문 (English)
TensorFlow is an end-to-end open source platform for machine learning. The implementations of the `Minimum` and `Maximum` TFLite operators can be used to read data outside of bounds of heap allocated objects, if any of the two input tensor arguments are empty. This is because the broadcasting implementation(https://github.com/tensorflow/tensorflow/blob/0d45ea1ca641b21b73bcf9c00e0179cda284e7e7/tensorflow/lite/kernels/internal/reference/maximum_minimum.h#L52-L56) indexes in both tensors with the same index but does not validate that the index is within bounds. 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 포함)
⚔️ 공격 벡터
비어 있는 입력 텐서를 포함한 조작된 TFLite 모델을 실행하여 메모리 경계 외 데이터 읽기
🛡️ 대응 방법
TensorFlow를 2.5.0 이상 버전으로 업데이트하거나 해당 보안 패치가 적용된 버전으로 업그레이드
🔧 검증 코드
출력된 버전 번호가 2.5.0보다 낮은지 확인하여 취약 여부를 판단합니다.
python3 -c 'import tensorflow as tf; print(tf.__version__)'