🇰🇷 한글 설명
TensorFlow의 Conv3D 구현 과정에서 사용자 제어 입력에 기반한 나머지 연산 시 0으로 나누기 오류가 발생할 수 있습니다. 공격자가 특정 필터 값을 조작할 경우 0으로 나누기 오류 또는 Eigen 어설션(assertion)을 유발하여 프로그램이 비정상 종료될 수 있습니다.
💡 쉬운 설명
머신러닝 도구인 TensorFlow에서 특정 데이터를 입력하면 계산 과정에서 0으로 나누는 오류가 발생할 수 있습니다. 이로 인해 프로그램이 갑자기 멈추거나 강제로 종료될 수 있습니다.
🇺🇸 원문 (English)
TensorFlow is an end-to-end open source platform for machine learning. A malicious user could trigger a division by 0 in `Conv3D` implementation. The implementation(https://github.com/tensorflow/tensorflow/blob/42033603003965bffac51ae171b51801565e002d/tensorflow/core/kernels/conv_ops_3d.cc#L143-L145) does a modulo operation based on user controlled input. Thus, when `filter` has a 0 as the fifth element, this results in a division by 0. Additionally, if the shape of the two tensors is not valid, an Eigen assertion can be triggered, resulting in a program crash. 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 포함)
⚔️ 공격 벡터
악의적인 사용자가 Conv3D 연산 시 필터의 다섯 번째 요소를 0으로 설정한 조작된 입력을 제공함
🛡️ 대응 방법
TensorFlow를 2.5.0 이상의 최신 버전으로 업데이트하거나 보안 패치가 적용된 버전으로 업그레이드함
🔧 검증 코드
출력된 버전 번호가 2.5.0 미만인지 확인하여 취약 여부를 판단함
python3 -c 'import tensorflow as tf; print(tf.__version__)'