sudo 中存在允许在使用特定规则时进行权限升级的漏洞

在实用程序中 须藤,用于代表其他用户组织命令的执行, 已确定 漏洞 (CVE-2019-14287),它允许您以 root 权限执行命令,如果 sudoers 设置中有规则,其中在允许关键字“ALL”之后的用户 ID 检查部分中明确禁止以 root 权限运行(“... (全部,!根)...”)。该漏洞不会出现在发行版的默认配置中。

如果 sudoers 具有有效但在实践中极其罕见的规则,允许在除 root 之外的任何用户的 UID 下执行某个命令,则有权执行此命令的攻击者可以绕过既定的限制并使用以下命令执行该命令根权。要绕过限制,只需尝试执行设置中指定的 UID“-1”或“4294967295”的命令,这将导致其以 UID 0 执行。

例如,如果设置中有一条规则,赋予任何用户在任何UID下执行程序/usr/bin/id的权限:

myhost ALL = (ALL, !root) /usr/bin/id

或仅允许特定用户 bob 执行的选项:

myhost bob = (ALL, !root) /usr/bin/id

用户可以执行“sudo -u ‘#-1’ id”,并且 /usr/bin/id 实用程序将以 root 权限启动,尽管设置中明确禁止。该问题是由于忽略了特殊值“-1”或“4294967295”而导致的,这些值不会导致UID发生变化,但由于sudo本身已经以root身份运行,在不更改UID的情况下,目标命令也是以 root 权限启动。

在SUSE和openSUSE发行版中,如果规则中没有指定“NOPASSWD”,则存在漏洞 不可利用,因为在 sudoers 中,默认启用“Defaults targetpw”模式,该模式会根据密码数据库检查 UID 并提示您输入目标用户的密码。对于此类系统,只有存在以下形式的规则时才能进行攻击:

myhost ALL = (ALL, !root) NOPASSWD: /usr/bin/id

版本中修复的问题 须藤 1.8.28。该修复也可以通过以下形式获得: 修补。在分发包中,该漏洞已被修复 Debian, Arch Linux, SUSE/开放SUSE, Ubuntu, Gentoo的 и FreeBSD的。在撰写本文时,该问题仍未解决 RHEL и Fedora。该漏洞由苹果公司的安全研究人员发现。

来源: opennet.ru

添加评论