一旦恶意软件获得对用户帐户的访问权限,它就可以:
1.在命令中创建一个bash别名(在当前shell中,在中~/.bashrc),该别名伪造[sudo] password for $USER:提示并窃取用户密码。
alias sudo='echo -n "[sudo] password for $USER: " && \
            read -r password && \
            echo "$password" >/tmp/sudo-password'
2.同样地,它可以将命名的可执行sudo在~/.bin和修改PATH变量以达到相同的效果:PATH="$HOME/.bin:$PATH"
3.按下X服务器上的Catch键,注意单词sudo,然后尝试在下两次Enter按键之间输入文本作为密码。
4.在任何环境(控制台,Wayland,X)中都可以使用例如来完成类似的操作$LD_PRELOAD。
5.如果恶意软件感染使用的外壳sudo并sudo缓存凭据,则该恶意软件可以连续检查是否可以在sudo没有密码的情况下:
while : ; do
    echo | sudo -S echo "test" &>/dev/null && break
    sleep 10
done
sudo echo "We now have root access"
预防:
1&2.使用\/bin/sudo。该\忽略别名和/bin/…忽略$PATH。或者,添加一个别名,例如:ssudo="\/bin/sudo",并始终使用ssudo代替sudo。病毒似乎不可能足够聪明地重新映射此别名。
3.避免在使用X11时输入密码。而是使用虚拟控制台或Weston。
5.设置timestamp_timeout=0在/etc/sudoers。
完全消除sudo密码被盗的机会的唯一方法似乎是完全避免密码。而是以root用户身份登录到虚拟控制台。
据亚历山大·佩斯利亚克(Alexander Peslyak)说:“ su [和sudo]的唯一安全用途是从特权较高的帐户切换到特权较低的帐户……”
另外,sudo确实有一些对策:
sudo从而tty不是从中读取stdin,因此alias sudo='tee -a /tmp/sudo-password | sudo'会中断sudo(但会捕获密码)。