🇰🇷 한글 설명
TensorFlow의 `tf.raw_ops.FractionalMaxPoolGrad` 구현에서 입력 텐서가 비어 있을 경우 정의되지 않은 동작이 발생합니다. 또한, 체크 조건이 거짓이 되어 프로세스가 중단됨으로써 서비스 거부(DoS) 공격에 취약할 수 있습니다.
💡 쉬운 설명
머신러닝 도구인 TensorFlow에서 빈 데이터를 처리할 때 프로그램이 갑자기 멈추거나 오류가 발생할 수 있는 문제입니다. 공격자가 의도적으로 빈 데이터를 입력하면 시스템을 마비시킬 수 있습니다.
🇺🇸 원문 (English)
TensorFlow is an end-to-end open source platform for machine learning. The implementation of `tf.raw_ops.FractionalMaxPoolGrad` triggers an undefined behavior if one of the input tensors is empty. The code is also vulnerable to a denial of service attack as a `CHECK` condition becomes false and aborts the process. The implementation(https://github.com/tensorflow/tensorflow/blob/169054888d50ce488dfde9ca55d91d6325efbd5b/tensorflow/core/kernels/fractional_max_pool_op.cc#L215) fails to validate that input and output tensors are not empty and are of the same rank. Each of these unchecked assumptions is responsible for the above issues. 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 포함)
⚔️ 공격 벡터
비어 있는 입력 텐서를 모델 연산에 전달하여 프로세스 강제 종료 유도
🛡️ 대응 방법
TensorFlow를 2.5.0 이상의 최신 버전으로 업데이트
🔧 검증 코드
출력된 버전 번호가 2.5.0보다 낮은지 확인
python3 -c "import tensorflow as tf; print(tf.__version__)"