Sudo 维护团队指出,从 Sudo 1.7.1 到 1.8.25p1 都包含一项可让非特权用户获得 root 权限的漏洞(编号 CVE-2019-18634),他们已在最新发布的 1.8.31 版本中完成修复,同时提供了暂时缓解的方法。Sudo 1.7.1 于 2009 年 4 月 19 日发布,因此该漏洞已存在大约 10 年。
另外,1.8.26 到 1.8.30 版本也发现存在 CVE-2019-18634 漏洞,但 1.8.26 版本发布时曾变更 EOF(end of file)处理的设定,致使该漏洞无法被利用。
Sudo 是 UNIX 和 Linux 操作系统广泛使用的工具,它让系统管理员给普通用户分配合理的权限,以执行一些只有管理员或其他特定帐号才能完成的任务。此次被发现的高危漏洞在启用了 pwfeedback 选项的系统中很容易被利用,根据漏洞的描述,pwfeedback 功能让系统能够以 ‘*’ 表示目前输入的字符长度,原意是一项提升安全性的功能,但安全研究员 Joe Vennix 发现系统启用 pwfeedback 功能后,用户可能会触发基于堆栈的缓冲区溢出 bug,从而获得 root 权限。
虽然在 sudo 的上游版本中默认情况下未启用 pwfeedback,但某些下游发行版,例如 Linux Mint 和 elementary OS 在其默认 sudoers 文件中启用了它(Ubuntu 不受影响)。
具有 sudo 特权的用户可以通过运行以下命令来检查是否启用了 pwfeedback:
sudo -l
如果在”Matching Defaults entries”输出中列出了 pwfeedback,则 sudoers 配置将受到影响。如下所示的 sudoers 配置就很容易受到攻击:
$ sudo -l Matching Defaults entries for millert on linux-build: insults, pwfeedback, mail_badpass, mailerpath=/usr/sbin/sendmail User millert may run the following commands on linux-build: (ALL : ALL) ALL
最后,建议受影响的系统尽快将 sudo 升级至最新版本 1.8.31。如果没条件升级到新版本,在启用了 pwfeedback 的 sudoer 配置文件里,将「Defaults pwfeedback」改成「Defaults !pwfeedback」,也能有效阻止攻击。