
Inyección de comandos en Pardus My Computer Os
CVE-2024-12970 describe una vulnerabilidad de OS Command Injection (Inyección de Comandos del Sistema) presente en el software My Computer del sistema operativo Pardus. Esta vulnerabilidad permite a un usuario inyectar comandos del sistema a través del parámetro de nombre de archivo, lo que permite a un atacante ejecutar comandos maliciosos en el sistema.
Esta vulnerabilidad está presente en versiones anteriores a la 0.7.2 del software Pardus My Computer.
La vulnerabilidad está presente en la función get_file_info. Esta función utiliza una llamada a subprocess para obtener la información de disco proporcionada por el usuario. Sin embargo, como el parámetro de ruta de archivo (file) en esta llamada no se valida correctamente, conduce a una vulnerabilidad de OS Command Injection a través del nombre de disco proporcionado por el usuario.
Función:
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 vulnerabilidad se basa en que el parámetro file sea proporcionado por el usuario y en que este parámetro se utilice directamente en la función subprocess.check_output(). El usuario puede asignar al parámetro file el nombre de disco que desee, y este nombre se utiliza directamente en los comandos shell. Esto permite al usuario realizar inyección de comandos.
Ejemplo de línea de parámetro vulnerable:
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)
Para explotar la vulnerabilidad, el atacante puede colocar un payload malicioso en el nombre del disco que va a montar, como se muestra a continuación:
&' <çalıştırılmak istenen shell komutu> #
Cuando se monta un disco con este nombre a través de Pardus My Computer, el exploit se ejecuta.