
Pardus My Computer Os Iniezione di comandi
CVE-2024-12970 descrive una vulnerabilità di OS Command Injection (Iniezione di comandi di sistema) presente nel software My Computer del sistema operativo Pardus. Questa vulnerabilità consente a un utente di iniettare comandi di sistema tramite il parametro nome file, permettendo così a un attaccante di eseguire comandi dannosi sul sistema.
Questa vulnerabilità è presente nelle versioni del software Pardus My Computer precedenti alla 0.7.2.
La vulnerabilità è presente nella funzione get_file_info. Questa funzione utilizza una chiamata subprocess per ottenere le informazioni sul disco fornite dall'utente. Tuttavia, poiché il parametro del percorso file (file) in questa chiamata non viene convalidato correttamente, attraverso il nome del disco fornito dall'utente si apre la strada a una OS Command Injection.
Funzione:
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
La vulnerabilità si basa sul fatto che il parametro file è fornito dall'utente e viene utilizzato direttamente nella funzione subprocess.check_output(). L'utente può assegnare al parametro file il nome di un disco a propria scelta, e questo nome viene usato direttamente nei comandi shell. Ciò consente all'utente di effettuare un'iniezione di comandi.
Esempio di riga con parametro vulnerabile:
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)
Per sfruttare la vulnerabilità, l'attaccante può inserire un payload dannoso nel nome del disco che collegherà, come segue:
&' <comando shell da eseguire> #
Quando un disco con questo nome viene montato tramite Pardus My Computer, l'exploit viene eseguito.