Vulnerabilidade na variável PATH

Publicado por Simon em 02/06/2005

[ Hits: 8.406 ]

 


Vulnerabilidade na variável PATH



Para quem não sabe, a variável de ambiente PATH é a variável que armazena os diretórios onde ficam os arquivos executáveis para o seu usuário, para que você possa dar um ldconfig em lugar de /sbin/ldconfig, ou seja, te permite suprimir o endereço do arquivo.

A vulnerabilidade está na comodidade, sim, isso mesmo, vamos ao exemplo:

"Você é uma pessoa que costuma instalar muitos programas a partir do source code e está cansado de ter de dar ./configure, ./nomedoprograma e coisas afins, então, vai e põe um '.' (ponto) na sua variável PATH, ou seja, agora, sempre que estiver em um diretório, ele estará no seu PATH, pois o ponto equivale ao diretório corrente."

Isso parece muito cômodo, não? Porém, se o root, por exemplo, tiver esse ponto em seu PATH, as coisas complicam... vamos ver o por quê:

Um usuário inescrupuloso vai em /tmp, diretório onde todos têm permissão de escrita e faz um script simples... chamado "ls" por exemplo, e coloca os seguintes comandos:

#!/bin/sh
ls
chmod 777 /etc/shadow > /dev/null

Você viu? O script "ls" vai dar um ls e vai tentar mudar a permissão de /etc/shadow para 777, enviando qualquer saída de erro para /dev/null, assim, o processo foi invisível para o usuário e como um binário no diretório corrente tem maior precedência do que os outros de mesmo nome... seu sistema ficou beeeem vulnerável! Mas é claro que o trabalho pode ser melhorado:

#!/bin/bash
ls
chmod 777 /etc/shadow > /dev/null
chmod 777 passwd > /dev/null
cp /etc/shadow /home/user/.shadow > /dev/null
cp /etc/passwd /home/user/.passwd > /dev/null
echo "user:0:0:::/bin/sh" >> /etc/passwd > /bin/null

Dentre outras coisas, então, cuidado com o ponto, pois ele pode ser o fim de sua rede!

Espero, por meio desta, ter ajudado a manter sua rede mais segura :D

[email protected]

Outras dicas deste autor

K-Jofol e XMMS

Kahakai window manager

Leitura recomendada

Backtrack 4 XSpy

Redirecionamento de portas com Iptables

Webinar III - Principais ameaças à aplicações web - Top 10 do OWASP

PwnTooth - pen testing em dispositivos bluetooth

Trancando arquivos criados VIM/VI

  

Comentários
[1] Comentário enviado por fabio em 02/06/2005 - 03:31h

Ótima dica, meus parabéns!

[2] Comentário enviado por agk em 02/06/2005 - 14:47h

Nossa realmente interessante essa dica. Sempre dou preferência a segurança ao invés da comodidade.
Parabéns pela dica.
[ ]'s.

[3] Comentário enviado por knowlink em 04/06/2005 - 10:40h

Tá até aí tudo bem, realmente o perigo existe e é comum isto ocorrer, porém podemos controlar isto sem deixar o root com um '.' na $PATH. Segue exemplo:

if [ "`id -u`" != "0" ]; then
PATH=$PATH:.
fi

Assim somente usuarios sem o UID 0 ganharão o diretório corrente incluso no PATH

[4] Comentário enviado por knowlink em 04/06/2005 - 10:41h

tá eu sei, esqueci do export PATH :)

[5] Comentário enviado por hra em 04/06/2005 - 14:54h

Parabéns Simon,

É esse tipo de informação que tem feito do linux um sistema mais seguro que o "aquele" concorrente das janelas.

A sua idéia é interessante e pode realmente compromoter um computador, mas só complementando:

A sequencia de procura dos diretório dentro da variável PATH é do primeiro pro ultimo, sendo que o executável estando no primeiro diretório o segundo nem será consultado, veja o exemplo:

export PATH=/bin:/sbin:/usr/bin:/usr/sbin:.

No caso do "ls" estando em /bin ele nunca será executado na pasta atual mesmo existindo.

Já se o PATH estiver com o ponto no começo aí é um abraço.

Tomar o root não é assim tão simples, mas é bom ficar atento.

Se eu estiver errado me perdoem e me corrijam por favor.





Contribuir com comentário