
Pardus My Computer OS-Befehlsinjektion
CVE-2024-12970 beschreibt eine OS Command Injection (Systembefehl-Injection) Schwachstelle in der My Computer Software des Pardus-Betriebssystems. Diese Schwachstelle ermöglicht es einem Benutzer, über den Dateinamen-Parameter Systembefehle einzuschleusen, sodass ein Angreifer bösartige Befehle im System ausführen kann.
Die Schwachstelle ist in Pardus My Computer Versionen vor 0.7.2 vorhanden.
Die Schwachstelle befindet sich in der get_file_info-Funktion. Diese Funktion verwendet einen Subprocess-Aufruf, um vom Benutzer erhaltene Datenträgerinformationen abzurufen. Da der Dateipfad-Parameter (file) in diesem Aufruf nicht ordnungsgemäß validiert wird, führt der vom Benutzer bereitgestellte Datenträgername zu einer OS Command Injection.
Funktion:
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
Die Schwachstelle beruht darauf, dass der Parameter file vom Benutzer bereitgestellt und direkt in der subprocess.check_output()-Funktion verwendet wird. Der Benutzer kann dem file-Parameter einen beliebigen Datenträgernamen zuweisen, der dann direkt in Shell-Befehlen verwendet wird. Dies ermöglicht dem Benutzer eine Befehlsinjektion.
Beispiel für die verwundbare Parameterzeile:
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)
Um die Schwachstelle auszunutzen, kann ein Angreifer im Namen des anzuschließenden Datenträgers einen böswilligen Payload wie folgt platzieren:
&' <auszuführender Shell-Befehl> #
Wenn ein Datenträger mit diesem Namen über Pardus My Computer gemountet wird, wird der Exploit ausgeführt.