在实用程序中
如果 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”,则存在漏洞
myhost ALL = (ALL, !root) NOPASSWD: /usr/bin/id
版本中修复的问题
来源: opennet.ru