Quando um malware acessa a conta de um usuário, ele pode:
1. Crie um alias bash (no shell atual e em ~/.bashrc
) para um comando que falsifica o prompt [sudo] password for $USER:
e rouba a senha do usuário.
alias sudo='echo -n "[sudo] password for $USER: " && \
read -r password && \
echo "$password" >/tmp/sudo-password'
2. Da mesma forma, ele pode colocar um executável chamado sudo
in ~/.bin
e modificar a variável PATH
para obter o mesmo efeito: PATH="$HOME/.bin:$PATH"
3. A tecla Catch pressiona o servidor X, observa a palavra sudo
e, em seguida, tenta o texto entre as duas próximas teclas Enter como senha.
4. Uma coisa semelhante pode ser feita em qualquer ambiente (o console, Wayland , X) usando por exemplo $LD_PRELOAD
.
5. Se o malware infectar um shell que usa sudo
e sudo
armazenar em cache as credenciais, o malware poderá verificar continuamente se é possível sudo
sem uma senha:
while : ; do
echo | sudo -S echo "test" &>/dev/null && break
sleep 10
done
sudo echo "We now have root access"
Prevenção:
1 & 2. Use \/bin/sudo
. O \
ignora os aliases e /bin/…
ignora $PATH
. Como alternativa, adicione um alias como: ssudo="\/bin/sudo"
e use sempre ssudo
em vez de sudo
. Parece improvável que um vírus seja esperto o suficiente para fazer o remapeamento desse pseudônimo.
3. Evite digitar sua senha ao usar o X11. Em vez disso, use um console virtual ou Weston .
5. Defina timestamp_timeout=0
em /etc/sudoers
.
A única maneira de eliminar completamente a chance de a senha sudo
ser detectada parece ser evitá-la completamente. Em vez disso, faça login como root em um console virtual.
De acordo com Alexander Peslyak : "o único uso seguro para o su [ e sudo] é mudar de uma conta mais privilegiada para uma menos privilegiada… "
Em uma nota lateral, o sudo tem algumas contramedidas:
-
sudo
lêtty
em vez destdin
, entãoalias sudo='tee -a /tmp/sudo-password | sudo'
quebrasudo
(mas captura a senha).