Linux发行版的严重Sudo故障

2021-01-29 05:54:22

我们都知道笑话。 Linux管理员:“给我做个三明治!”奴才:“不!” Linux管理员:“ sudo给我做个三明治!”奴才:“好吧。”但是,当发现一个古老的sudo安全漏洞时,这并不是开玩笑。

对于那些没有通过Unix命令行方式启动的用户,sudo是一个序言,它授予普通用户对其希望执行的任何命令的管理权。这是避免使用root帐户的便捷工具,这总是很危险的主张。

经过仔细研究,发现许多所谓的Linux漏洞并不多。但是,然后是sudo的CVE-2021-3156,又名“ Samedit男爵”。

有了这个,如果您懒于使计算机保持最新状态,就会遇到麻烦。任何本地用户都可以利用基于sudo堆的缓冲区溢出。更糟糕的是,即使没有在sudoers文件中列出,任何Joe或Jane用户都可以利用它来提升对root用户的特权。

正如sudo程序员所解释的:通常,当您在shell模式下运行sudo命令时,您会在命令参数中使用反斜杠转义任何特殊字符。然后,sudoers策略插件会在评估sudoers策略之前从参数中删除转义字符。但是,如果相同的代码以未转义的反斜杠字符结尾,则它将读取字符串的最后一个字符。

通常,没关系。但是,由于另一个错误,这次是在外壳解析代码中,攻击者可以使用-s或-i选项运行sudoedit。为什么这么糟?由于它启用了外壳模式,并且由于实际上没有命令在运行,因此sudo不会转义特殊字符。最后但并非最不重要的一点是,决定是否删除转义符的代码不会检查命令是否真正在运行。

因此,发生的情况是当命令行到达sudoers_policy_main()程序时,set_cmnd()将命令行参数连接到基于堆的缓冲区中。不知道命令有多长时间,使用“ user_args”缓冲区中的越界字符,set_cmnd()容易受到基于堆的缓冲区溢出的影响。

该理论听起来可能很复杂,但是在实践中,利用它是微不足道的。要开始解决问题,您需要做的就是输入命令“ sudoedit -s”,其中任何命令行参数都以单个反斜杠字符结尾。

是的,最近还有其他sudo安全问题,但与这个相比,它们是小问题。对于那些打你的人,你必须有一个不寻常的sudosetup。这将适用于安装了sudo的每个Linux系统。正如安全公司Qualys Research Team的Animesh Jain所说,漏洞签名产品经理说:“ Qualys建议用户立即为此漏洞应用补丁。”没错

立即修补Linux系统的sudo命令。您希望尽快升级到sudo 1.9.5p2或更高版本。

认为这可能不会发生在您身上吗?请!如今,有许多使用蛮力方法针对Linux系统的僵尸网络,此漏洞非常适合自动化利用。

你在等什么?做吧现在做。修补程序已经在所有主要的Linux发行版中提供。