H0e4a0r1t的小屋

CVE-2019-14287 sudo 配置不当-权限提升漏洞

字数统计: 818阅读时长: 3 min
2019/10/15 Share

CVE-2019-14287 sudo 配置不当-权限提升漏洞

0x00. 漏洞描述

在sudo使用任意用户ID实现运行命令的方式中发现了一个缺陷。如果编写了一个sudoers条目以允许攻击者以除root以外的任何用户身份运行命令,则攻击者可以使用此缺陷来绕过该限制。

0x01. 漏洞详情

如果将sudo配置为允许用户通过Runas规范中的ALL关键字以任意用户身份运行命令,则可以通过指定用户ID -1或4294967295以root用户身份运行命令。

即使Runas规范明确禁止root访问,只要Runas规范中首先列出ALL关键字,具有足够sudo特权的用户就可以使用它来以root身份运行命令。

以这种方式运行的命令的日志条目将列出目标用户为4294967295,而不是root。此外,将不会为该命令运行PAM会话模块。

10.png

注:

利用该漏洞需要用户具有sudo特权,该特权使他们能够使用任意用户ID运行命令。通常,这意味着用户的sudoers条目在Runas说明符中具有特殊值 ALL

如果sudoers策略允许,Sudo支持使用用户指定的用户名或用户ID运行命令。例如,以下sudoers条目允许id命令以任何用户身份运行,因为它在Runas说明符中包含ALL关键字。

1
alice myhost = (ALL) /usr/bin/id

不仅是用户 能够以任何有效用户身份运行id命令,她还能够使用#uid语法以任意用户ID身份运行它,例如:

1
sudo -u#1234 id -u

将返回1234。但是,setresuid(2)setreuid(2)系统调用(sudo在运行命令之前用来更改用户ID)特别对待用户ID -1(或其等效的4294967295),并且不更改以下内容的用户ID:这两个值,

1
sudo -u#-1 id -u

或者

1
sudo -u#4294967295 id -u

实际上将返回0。这是因为sudo命令本身已经以用户ID 0运行,因此当sudo尝试更改为用户ID -1时,不会发生任何更改。

这将导致生成sudo日志条目,这些条目报告命令是由用户ID 4294967295(而不是root(或用户ID 0))运行的。另外,由于通过-u选项指定的用户ID 在密码数据库中不存在,因此不会运行任何PAM会话模块。

如果编写了sudoers条目以允许用户以除root以外的任何用户身份运行命令,则可以使用该错误来避免此限制。例如,给定以下sudoers条目:

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

允许用户bob以root身份以外的任何用户身份运行vi。但是,由于该错误,bob实际上可以通过运行

1
sudo -u#-1 vi

来以root身份运行 vi,这违反了安全策略。

仅在Runas说明符中存在ALL关键字的sudoers条目会受到影响。例如,以下sudoers条目不受影响:

1
alice myhost = / usr / bin / id

在此示例中,只允许爱丽丝以root身份运行id命令。以其他用户身份运行命令的任何尝试都将被拒绝。

0x02. 修复

该漏洞已在 sudo 1.8.28中修复。

0x03. 参考

https://www.sudo.ws/alerts/minus_1_uid.html

CATALOG
  1. 1. CVE-2019-14287 sudo 配置不当-权限提升漏洞
    1. 1.0.1. 0x00. 漏洞描述
    2. 1.0.2. 0x01. 漏洞详情
    3. 1.0.3. 注:
    4. 1.0.4. 0x02. 修复
    5. 1.0.5. 0x03. 参考