🇰🇷 한글 설명
MooreThreads torch_musa의 모든 버전에서 발생하는 불안전한 역직렬화 취약점으로, torch_musa.utils.compare_tool의 compare_for_single_op() 및 nan_inf_track_for_single_op() 함수에서 사용자 제어 파일 경로에 대해 유효성 검사를 수행하지 않아 임의의 코드 실행이 가능하다.
💡 쉬운 설명
MooreThreads torch_musa 라이브러리에 있는 취약점으로, 악의적인 파일을 만들어 임의의 파이썬 코드를 실행할 수 있다. 이는 원격 코드 실행을 허용하여 공격자가 피해자 프로세스의 권한을 얻을 수 있다. 이는 매우 심각한 취약점으로, 즉시 조치가 필요하다.
🇺🇸 원문 (English)
MooreThreads torch_musa through all versions contains an unsafe deserialization vulnerability in torch_musa.utils.compare_tool. The compare_for_single_op() and nan_inf_track_for_single_op() functions use pickle.load() on user-controlled file paths without validation, allowing arbitrary code execution. An attacker can craft a malicious pickle file that executes arbitrary Python code when loaded, enabling remote code execution with the privileges of the victim process.
📍 영향받는 시스템
MooreThreads torch_musa의 모든 버전
⚔️ 공격 벡터
사용자 제어 파일 경로에 악의적인 pickle 파일을 생성하여 임의의 코드를 실행
🛡️ 대응 방법
torch_musa 라이브러리를 최신 버전으로 업데이트하거나, 사용자 제어 파일 경로에 대한 유효성 검사를 추가하여 임의의 코드 실행을 방지
🔧 검증 코드
로컬 시스템에서 Python을 실행하여 verification_code를 실행한다. pickle_test.pkl 파일이 생성되면, 임의의 코드를 실행할 수 있는 취약점이 존재한다는 것을 의미한다. verification_code는 임의의 코드를 실행하지 않고, pickle.load() 함수의 동작을 테스트한다.
import pickle; import os
try:
with open('pickle_test.pkl', 'wb') as f:
pickle.dump(os.system, f)
with open('pickle_test.pkl', 'rb') as f:
pickle.load(f)
print({"result": "취약", "reason": "pickle.load() 함수가 사용자 제어 파일 경로에서 임의의 코드를 실행"})
except Exception as e:
print({"result": "양호", "reason": "pickle.load() 함수에서 예외 발생"})