虽然运维惨兮兮,但“这可能是近期内最需要重视的sudo漏洞。”因为这次的sudo漏洞CVE-2021-3156能够允许任何本地用户不需要身份验证就可以获得root权限。
任何本地用户都可以获取root权限
sudo是一个Unix程序,可以让系统管理员为sudoers文件中列出的普通用户提供有限的root权限,同时保留其活动日志。它按照“最小特权原则”工作,在该原则下,该程序仅授予人们足够完成工作的权限,而不会损害系统的整体安全。
当在类似Unix的OS上执行命令时,非特权用户如果具有权限或知道超级用户的密码,就可以使用sudo命令来执行root权限命令。通过将sudoers配置文件包括在内,还可以将Sudo设置为允许普通用户像其他任何超级用户一样运行命令。
Qualys的安全研究人员发现了名为“Baron Samedit”(CVE-2021-3156)的sudo提权漏洞,该漏洞研究人员于1月13日披露了此漏洞,并确保在公开发现内容之前先发布补丁程序。
Qualys研究人员认为,此问题是任何本地用户(普通用户和系统用户,无论是否在sudoers文件中列出)都可以利用基于堆的缓冲区溢出,攻击者无需知道用户密码即可获得root权限。
sudo错误地转义了参数中反斜杠,从而导致缓冲区溢出。
1.9.5p2更改日志显示:“通常,通过外壳(sudo -s或sudo -i)运行命令时,sudo会转义特殊字符。”“但是,也可以使用-s或-i标志运行sudoedit,在这种情况下,实际上并没有进行转义,这使得缓冲区溢出成为可能。”
Qualys针对CVE-2021-3156漏洞进行了三次测试,以展示潜在的攻击者如何成功利用此漏洞。使用这些漏洞,研究人员能够在多个Linux发行版上获得完整的root权限,包括Debian 10(sudo 1.8.27),Ubuntu 20.04(sudo 1.8.31)和Fedora 33(sudo 1.9.2)。
根据Qualys的说法,攻击者在sudo支持的其他操作系统和发行版也可能利用该漏洞。
Qualys在周二发布的CVE-2021-3156安全公告中提供了有关如何利用CVE-2021-3156的更多技术细节。
下面是如何利用CVE-2021-3156严重漏洞的视频演示。
漏洞在被披露前已修复
该漏洞是9年前(2011年7月)在sudo程序中引入的,提交为8255ed69。
影响版本包含:
-sudo:sudo: 1.8.2 - 1.8.31p2
-sudo:sudo: 1.9.0 - 1.9.5p1
sudo贡献者在今天早些时候发布的sudo 1.9.5p2版本中已修复了漏洞,与此同时Qualys公开了他们的发现。
要测试系统是否易受攻击,必须以非root用户身份登录并运行“ sudoedit -s / ”命令。易受攻击的系统将引发以“ sudoedit:”开头的错误提示,而已修补系统将显示以“ usage:”开头的错误提示。
建议
使用sudo且将root权限委派给其用户的系统管理员应立即升级到sudo 1.9.5p2或更高版本。
在2019年,另一个sudo漏洞(漏洞名称为 CVE-2019-14287 )允许无特权的用户以root身份执行命令。
幸运的是,该缺陷只能在非标准配置中利用,这意味着大多数运行易受攻击的sudo版本的系统都不会受到影响。