
Pardus 내 컴퓨터 Os 명령 주입
CVE-2024-12970는 Pardus 운영 체제의 My Computer 소프트웨어에서 발견된 OS Command Injection (시스템 명령어 삽입) 취약점을 설명합니다. 이 취약점은 사용자가 파일 이름 매개변수를 통해 시스템 명령어를 주입할 수 있게 하여, 공격자가 시스템에서 악성 명령을 실행할 수 있도록 합니다.
이 취약점은 Pardus My Computer 소프트웨어 버전 0.7.2 이전 버전에 존재합니다.
취약점은 get_file_info 함수에 존재합니다. 이 함수는 사용자로부터 받은 디스크 정보를 가져오기 위해 서브프로세스 호출을 사용합니다. 그러나 이 호출의 파일 경로 매개변수(file)가 제대로 검증되지 않아 사용자가 제공한 디스크 이름을 통해 OS Command Injection 취약점이 발생합니다.
함수:
def get_file_info(file, network=False):
if network:
try:
process = subprocess.check_output(f"df '{file}' --block-size=1000 -T | awk 'NR==1 {{next}} {{print $1,$2,$3,$4,$5,$7; exit}}'", shell=True, timeout=1)
except subprocess.TimeoutExpired:
print("timeout error on {}".format(file))
return None
취약점은 file 매개변수가 사용자에 의해 제공되고 이 매개변수가 subprocess.check_output() 함수에서 직접 사용된다는 점에 기반합니다. 사용자는 file 매개변수에 자신이 선택한 디스크 이름을 입력할 수 있으며, 이 디스크 이름은 셸 명령어에 직접 사용됩니다. 이로 인해 사용자가 명령어 삽입을 수행할 수 있게 됩니다.
취약한 매개변수 예시 줄:
process = subprocess.check_output(f"df '{file}' --block-size=1000 -T | awk 'NR==1 {{next}} {{print $1,$2,$3,$4,$5,$7; exit}}'", shell=True)
취약점을 악용하기 위해 공격자는 연결할 디스크 이름에 다음과 같은 악성 페이로드를 삽입할 수 있습니다:
&' <çalıştırılmak istenen shell komutu> #
이 이름을 가진 디스크가 Pardus My Computer를 통해 마운트되면 익스플로잇이 실행됩니다.