Solução
Sistemas operacionais é definitivamente um tema interessante. E entender como um funciona (ao menos um pouco) pode ser bem útil para entender aspectos de segurança, por exemplo, mas não exclusivamente, de um servidor.
Como eu sempre gosto de reforçar, segurança tem muito a ver com entender como as coisas funcionam. Esse exercício é mais uma evidência disso.
Repare que na criação de variáveis de ambiente, não é
previsto por design qualquer tipo de
proteção/limitação em relação a criação dessas variáveis
para outros usuários ou “globalmente”, como foi chamado a
alteração do /etc/environment
.
Pode parecer inofensivo meramente definir uma variável de ambiente para um usuário, mas não é. Esse “pequeno poder” é o bastante para que um usuário faça escalação de privilégios no sistema operacional. E existe mais de uma maneira possível de fazer isso. Exemplos:
- Pode-se alterar o
PATH
do usuário e sobrepor comandos comuns do sistema (como osudo
) por comandos falsos que sirvam para executar um código malicioso ou obter uma senha. - Pode-se usar a variável
LD_PRELOAD
para carregar uma biblioteca compartilhada maliciosa em todo programa executado no sistema pelo usuário que tenha essa variável definida.
No caso do /etc/environment
, essas variáveis
seriam aplicadas inclusive para a conta root. Facilitando
ainda mais a escalação de privilégios.
Faça um experimento local e escale privilégios somente
definindo variáveis de ambiente em
/etc/environment
.