🇰🇷 한글 설명
TensorFlow의 Conv2DBackpropFilter 구현에서 사용자가 제공한 텐서 모양을 기반으로 나누는 값을 계산할 때 0으로 나누는 오류가 발생할 수 있습니다. 모든 모양이 비어 있을 경우 work_unit_size가 0이 되어 런타임 예외가 발생하며, 이는 서비스 거부(DoS) 공격으로 악용될 수 있습니다.
💡 쉬운 설명
머신러닝 도구인 TensorFlow에서 잘못된 데이터를 입력하면 계산 중에 0으로 나누는 오류가 발생합니다. 이로 인해 프로그램이 갑자기 멈추거나 작동을 중단할 수 있습니다.
🇺🇸 원문 (English)
TensorFlow is an end-to-end open source platform for machine learning. An attacker can cause a division by zero to occur in `Conv2DBackpropFilter`. This is because the implementation(https://github.com/tensorflow/tensorflow/blob/1b0296c3b8dd9bd948f924aa8cd62f87dbb7c3da/tensorflow/core/kernels/conv_grad_filter_ops.cc#L513-L522) computes a divisor based on user provided data (i.e., the shape of the tensors given as arguments). If all shapes are empty then `work_unit_size` is 0. Since there is no check for this case before division, this results in a runtime exception, with potential to be abused for a denial of service. 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 포함)
⚔️ 공격 벡터
모든 모양(shape)이 비어 있는 텐서를 입력값으로 제공하여 런타임 예외 유도
🛡️ 대응 방법
TensorFlow를 2.5.0 이상의 버전으로 업데이트하거나 해당 패치가 적용된 버전으로 업그레이드
🔧 검증 코드
출력된 버전이 2.5.0 미만이면 해당 취약점에 노출된 상태입니다.
python3 -c 'import tensorflow as tf; print(tf.__version__)'