
Pardus My Computer Os Command Injection
CVE-2024-12970 descreve uma vulnerabilidade de Injeção de Comandos do SO (OS Command Injection) encontrada no software My Computer do sistema operacional Pardus. Essa vulnerabilidade permite que um usuário injete comandos do sistema através do parâmetro de nome de arquivo, permitindo que um invasor execute comandos maliciosos no sistema.
Essa vulnerabilidade está presente nas versões do software Pardus My Computer anteriores à versão 0.7.2.
A vulnerabilidade está presente na função get_file_info. Esta função usa uma chamada de subprocesso para obter informações de disco fornecidas pelo usuário. No entanto, como o parâmetro de caminho de arquivo (file) nessa chamada não é validado adequadamente, isso leva a uma brecha de Injeção de Comandos do SO através do nome do disco fornecido pelo usuário.
Função:
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
A vulnerabilidade baseia-se no fato de que o parâmetro file é fornecido pelo usuário e usado diretamente na função subprocess.check_output(). O usuário pode fornecer seu próprio nome de disco para o parâmetro file, e esse nome de disco é usado diretamente nos comandos shell. Isso permite que o usuário realize injeção de comandos.
Exemplo de linha de parâmetro vulnerável:
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 explorar a vulnerabilidade, o invasor pode inserir um payload malicioso no nome do disco a ser montado, como abaixo:
&' <çalıştırılmak istenen shell komutu> #
Quando um disco com este nome é montado através do Pardus My Computer, o exploit é executado.