
Внедрение команд в Pardus My Computer Os
CVE-2024-12970 описывает уязвимость OS Command Injection (инъекция системных команд) в программном обеспечении My Computer операционной системы Pardus. Эта уязвимость позволяет пользователю внедрять системные команды через параметр имени файла, что даёт злоумышленнику возможность выполнять вредоносные команды в системе.
Данная уязвимость присутствует в версиях программного обеспечения Pardus My Computer до 0.7.2.
Уязвимость присутствует в функции get_file_info. Эта функция использует вызов subprocess для получения информации о диске, вводимой пользователем. Однако параметр пути к файлу (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 произвольное имя диска, и это имя диска напрямую используется в shell-командах. Это даёт пользователю возможность выполнять инъекцию команд.
Пример уязвимой строки параметра:
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, эксплойт срабатывает.