🔍 CVE-2021-37644

5.5
CVSS Score
MEDIUM
2021-08-12
2026-06-17 04:00
✅ 완료

🇰🇷 한글 설명

TensorFlow의 `tf.raw_ops.TensorListReserve` 함수에서 `num_elements` 인자에 음수 값을 전달할 경우, 내부적으로 `std::vector.resize()`를 호출할 때 유효성 검사를 수행하지 않아 프로세스가 비정상 종료됩니다. 이는 사용자가 입력한 값을 검증 없이 메모리 재할당에 사용하기 때문에 발생하는 문제입니다.

💡 쉬운 설명

머신러닝 도구인 TensorFlow를 사용할 때, 잘못된 숫자(음수)를 입력하면 프로그램이 갑자기 꺼져버리는 버그가 있습니다. 공격자가 이 점을 이용해 시스템을 강제로 중단시킬 수 있습니다.

🇺🇸 원문 (English)

TensorFlow is an end-to-end open source platform for machine learning. In affected versions providing a negative element to `num_elements` list argument of `tf.raw_ops.TensorListReserve` causes the runtime to abort the process due to reallocating a `std::vector` to have a negative number of elements. The [implementation](https://github.com/tensorflow/tensorflow/blob/8d72537c6abf5a44103b57b9c2e22c14f5f49698/tensorflow/core/kernels/list_kernels.cc#L312) calls `std::vector.resize()` with the new size controlled by input given by the user, without checking that this input is valid. We have patched the issue in GitHub commit 8a6e874437670045e6c7dc6154c7412b4a2135e2. The fix will be included in TensorFlow 2.6.0. We will also cherrypick this commit on TensorFlow 2.5.1, TensorFlow 2.4.3, and TensorFlow 2.3.4, as these are also affected and still in supported range.

📍 영향받는 시스템

TensorFlow 2.6.0 미만 버전 (2.5.1, 2.4.3, 2.3.4 포함)

⚔️ 공격 벡터

사용자 입력값이 포함된 `tf.raw_ops.TensorListReserve` 함수에 음수 값을 전달하여 서비스 거부(DoS) 유도

🛡️ 대응 방법

TensorFlow를 2.6.0 이상 버전으로 업데이트하거나, 패치가 적용된 2.5.1, 2.4.3, 2.3.4 버전으로 업데이트하십시오.

🔧 검증 코드

출력된 버전 번호가 2.6.0 미만인지 확인하여 취약 여부를 판단합니다.

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

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Azure Machine Learning