
Pardus My Computer Os Command Injection
CVE-2024-12970 décrit une vulnérabilité d'injection de commandes système (OS Command Injection) dans le logiciel My Computer du système d'exploitation Pardus. Cette vulnérabilité permet à un utilisateur d'injecter des commandes système via le paramètre de nom de fichier, permettant ainsi à un attaquant d'exécuter des commandes malveillantes sur le système.
Cette vulnérabilité est présente dans les versions du logiciel Pardus My Computer antérieures à la version 0.7.2.
La vulnérabilité se trouve dans la fonction get_file_info. Cette fonction utilise un appel subprocess pour récupérer les informations de disque fournies par l'utilisateur. Cependant, comme le paramètre de chemin de fichier (file) n'est pas correctement validé, cela conduit à une faille d'injection de commandes système via le nom de disque fourni par l'utilisateur.
Fonction :
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 vulnérabilité repose sur le fait que le paramètre file est fourni par l'utilisateur et utilisé directement dans la fonction subprocess.check_output(). L'utilisateur peut attribuer au paramètre file le nom de disque de son choix, et ce nom de disque est directement utilisé dans les commandes shell. Cela permet à l'utilisateur d'effectuer une injection de commandes.
Exemple de ligne de paramètre vulnérable :
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)
Pour exploiter la vulnérabilité, l'attaquant peut insérer une charge utile malveillante dans le nom du disque qu'il va monter, comme suit :
&' <çalıştırılmak istenen shell komutu> #
Lorsqu'un disque portant ce nom est monté via Pardus My Computer, l'exploit s'exécute.