udo维护团队指出,从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
MatchingDefaultsentriesformillertonlinux-build:
insults,pwfeedback,mail_badpass,mailerpath=/usr/sbin/sendmail
Usermillertmayrunthefollowingcommandsonlinux-build:
(ALL:ALL)ALL
最后,建议受影响的系统尽快将sudo升级至最新版本1.8.31。如果没条件升级到新版本,在启用了pwfeedback的sudoer配置文件里,将「Defaults pwfeedback」改成「Defaults !pwfeedback」,也能有效阻止攻击。