🔍 CVE-2021-29549

2.5
CVSS Score
LOW
2021-05-14
2026-06-17 03:47
✅ 완료

🇰🇷 한글 설명

TensorFlow의 `tf.raw_ops.QuantizedBatchNormWithGlobalNormalization` 연산에서 제로 나누기 오류로 인한 서비스 거부(DoS)가 발생할 수 있습니다. 입력 형상에 따라 결정되는 `vector_num_elements` 값이 0이 될 수 있는데, 이를 검증하지 않고 나머지 연산을 수행하기 때문입니다.

💡 쉬운 설명

TensorFlow를 사용할 때 특정 데이터를 입력하면 프로그램이 0으로 나누는 계산을 시도하다가 갑자기 멈춰버릴 수 있습니다. 공격자가 의도적으로 잘못된 크기의 데이터를 보내 시스템을 마비시킬 수 있는 문제입니다.

🇺🇸 원문 (English)

TensorFlow is an end-to-end open source platform for machine learning. An attacker can cause a runtime division by zero error and denial of service in `tf.raw_ops.QuantizedBatchNormWithGlobalNormalization`. This is because the implementation(https://github.com/tensorflow/tensorflow/blob/6f26b3f3418201479c264f2a02000880d8df151c/tensorflow/core/kernels/quantized_add_op.cc#L289-L295) computes a modulo operation without validating that the divisor is not zero. Since `vector_num_elements` is determined based on input shapes(https://github.com/tensorflow/tensorflow/blob/6f26b3f3418201479c264f2a02000880d8df151c/tensorflow/core/kernels/quantized_add_op.cc#L522-L544), a user can trigger scenarios where this quantity is 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 포함)

⚔️ 공격 벡터

조작된 입력 형상(Shape)을 가진 데이터를 TensorFlow 모델에 전달하여 런타임 오류 유도

🛡️ 대응 방법

TensorFlow를 2.5.0 이상의 버전으로 업데이트하거나, 해당 패치가 적용된 지원 버전으로 업데이트하십시오.

🔧 검증 코드

출력된 버전 번호가 2.5.0보다 낮은지 확인하십시오.

Shell / Script
python3 -c 'import tensorflow as tf; print(tf.__version__)'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:L

💻 영향받는 소프트웨어

Azure Machine Learning