1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > linux sudo漏洞 可导致用户以 root 权限运行命令

linux sudo漏洞 可导致用户以 root 权限运行命令

时间:2020-07-15 11:59:53

相关推荐

linux sudo漏洞 可导致用户以 root 权限运行命令

Linux用户要注意了!几乎所有基于UNIX和Linux的操作系统上安装的核心命令,也是最重要、最强大也最常用的工具Sudo中被曝存在一个漏洞。

Sudo 的全称是“superuserdo”,它是Linux系统管理指令,允许用户在不需要切换环境的前提下以其它用户的权限运行应用程序或命令,通常是以 root 用户身份运行命令,以减少 root 用户的登录和管理时间,同时提高安全性。该漏洞是 sudo安全策略绕过问题,可导致恶意用户或程序在目标 Linux 系统上以 root 身份执行任意命令,即使“sudoers configuration”明确禁止该 root访问权限也不例外。

漏洞详情

这个漏洞的 CVE 编号是CVE--14287,是由苹果信息安全部门的研究员 Joe Vennix 发现并分析的。与其说让人恐慌,不如说让人兴趣盎然,它要求系统具有非标准配置。换句话说,在默认情况下,Linux 计算机并不易受攻击。

然而,如果你的配置是这样的:让用户以 root 权限以外的其他用户权限运行命令,那么可能就需要注意了:因为用户可以通过命令行上的–u#-1绕过这个非 root限制。

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

只要Runas 规范中最先列出ALL关键字,即使Runas 规范明确禁止 root访问权限,那么具有足够的 sudo 权限的而用户即可以 root 身份运行命令。以这种方式运行的命令的日志条目会把目标用户列为 4294967295而非 root。

另外,将不会为该命令运行 PAM 会话模块。具体而言:利用该漏洞要求用户具有 sudo 权限,从而以任意用户 ID 运行命令。一般而言,这意味着用户的 sudoers 条目在 Runas 规范中具有特殊值ALL。Sudo 支持在 sudoers 策略允许的情况下,以用户指定的名称或用户 ID 运行命令。例如,如下 sudoers 条目允许 id 命令以任意用户身份运行,因为它包含 Runas 规范中的关键字ALL。

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

用户不仅能够以其它合法用户身份运行该 id 命令,还能使用#uid语法以任意用户 ID 运行该命令,例如:

sudo -u#1234 id -u

将返回1234,然而,sudo 在运行命令前用户修改用户 ID 的setresuid(2)和setreuid(2)系统调用将特殊对待用户 ID为-1(或其未签名的等同值4294967295)而且并不会修改该值的用户 ID。因此,

sudo -u#-1 id -u

sudo -u#4294967295 id -u

实际上会返回0。这是因为 sudo命令本身就已经以用户 ID 为0运行,因此当 sudo 试图将用户 ID 修改成-1时,不会发生任何变化。这就导致 sudo 日志条目将该命令报告为以用户 ID 为4294967295而非root(或者用户ID为0)运行命令。此外,由于通过–u选项指定的用户 ID 并不存在于密码数据库中,因此不会运行任何 PAM 会话模块。如果sudoers 条目被写入允许用户以除 root 身份以外的用户身份运行命令,则可利用该 bug 绕过该限制。例如,给定如下 sudoers 条目:

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

用户 bob 被允许以除了 root以外的其它用户身份运行vi。然而,由于存在该漏洞,bob 实际上能够通过运行sudo -u#-1 vi的方式以 root 身份运行vi,从而违反了安全策略。只有Runas 规范中存在关键字ALL的sudoers 条目受影响。例如,如下sudoers 条目并不受影响:

myhost alice = /usr/bin/id

在这个例子中,alice仅被允许以 root身份运行 id 命令。任何以其它用户身份运行该命令的尝试都将遭拒绝。

影响版本

1.8.28之前的所有 Sudo 版本均受影响。

修复方案

Sudo 1.8.28 版本已修复该漏洞。强烈建议 Linux用户将 sudo包手动更新至最新版本。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。