当前位置: 首页 > 科技观察

赶快检查一下你的sudo:漏洞暴露,无需密码即可获取root权限

时间:2023-03-21 20:38:38 科技观察

本文经AI新媒体量子比特(公众号ID:QbitAI)授权转载,转载请联系出处。“这可能是近期最需要关注的sudo漏洞。”程序员知道sudo可以“为所欲为”。现在,来自Qualys的安全研究人员发现了sudo中的一个严重漏洞:任何本地用户都可以在无需身份验证(密码)的情况下获得root权限。也就是说,攻击者可以利用这个漏洞直接接管主机系统!什么样的漏洞?Qualys研究人员指出,该漏洞是基于堆的缓冲区溢出。利用这个漏洞,攻击者可以在不知道用户密码的情况下获得root权限。而且,它是默认配置。△攻击效果该漏洞被命名为CVE-2021-3156(又名BaronSamedit)。Qualys分析认为,造成漏洞的原因是sudo错误地转义了参数中的反斜杠。通常,当通过shell(sudo-s或sudo-i)运行命令行时,sudo会转义特殊字符。但-s或-i也可用于运行sudoedit,在这种情况下,特殊字符实际上不会转义,这可能会导致缓冲区溢出。利用此漏洞,研究人员成功获得了多个Linux发行版的完全root权限,包括Ubuntu20.04(sudo1.8.31)、Debian10(sudo1.8.27)和Fedora33(sudo1.9.2)。并且,Qualys认为,在这种情况下,sudo支持的其他操作系统和Linux发行版也容易受到攻击,不能排除风险。该漏洞在10年前就存在,攻击者可以跳过认证直接获取root权限。该漏洞的严重性应该引起大多数用户和开发者的注意。事实上,这个漏洞从2011年7月就已经存在,由commit8255ed69引入。令人难以置信的是,从2011年7月29日至今,没有人发现并修复由此产生的漏洞。也就是说,这个漏洞一直存在于sudo从1.9.0到1.9.5p1的所有稳定版本,以及从1.8.2到1.8.31p2的所有旧版本的默认配置中。和往常一样,在Qualys公布漏洞详情之前,sudo已经正式修复了这个漏洞。因此,升级到sudo版本1.9.5p2或更高版本可以解决风险。如何测试您使用的sudo版本是否存在漏洞?首先,您需要以非根用户身份登录并运行“sudoedit-s/”命令。易受攻击的系统会抛出以“sudoedit:”开头的错误,而修补过的系统会抛出以“usage:”开头的错误。为什么10年了还不修?为什么这个漏洞提交了将近10年都没有人关注?在HackerNews上,有网友给出了一个推论:他认为用户提交的包括但不限于sudo等Linux程序的语句从未被测试过。在提交未经测试的bug声明时,原作者没有充分的理由相信bug的真实性,bug修复与否无关紧要。比如去年,苹果的安全人员也发现了类似的安全漏洞。在非默认配置下,LinuxMint上的sudo也允许用户跳过身份验证以获得root权限。大多数像这样的漏洞补丁都没有经过测试。因此,对于用户来说,即使安装了漏洞补丁,仍然存在漏洞修补不彻底和出现新漏洞的风险。还有人说sudo官方没有“审稿人”的功能,用户提交也没有明确的安全标准,所以不会有测试和审稿。普通用户呢?不幸的是,目前还没有完美的解决方案。面对可能出现的漏洞,您能做的就是格外注意您的系统安全,以防止不受信任的用户访问您的计算机。