25

Linux sudo 被曝提权漏洞,任意用户均能以 root 身份运行命令 - OSCHINA

 4 years ago
source link: https://www.oschina.net/news/110582/linux-sudo-run-as-root-flaw
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Linux sudo 被曝提权漏洞,任意用户均能以 root 身份运行命令

发布于 2019年10月15日
收藏 114
164515_ld5P_2720166.png

Linux 用户请注意!根据外媒的报道,Linux sudo 被曝出存在一个提权漏洞,可完全绕过 sudo 的安全策略。

先简单说明一下情况,报道指出 sudo 存在一个安全策略隐患,即便"sudoers configuration"配置文件中明确表明不允许以 root 用户进行访问,但通过该漏洞,恶意用户或程序仍可在目标 Linux 系统上以 root 用户身份执行任意命令。

sudo,也就是以超级管理员身份运行(superuser do)的意思。sudo 是 Linux 中最常使用的重要实用程序之一,它功能十分强大,几乎安装在每一款基于 UNIX 或 Linux 的操作系统上,也是这些操作系统的核心命令。作为一个系统命令,普通用户可通过它以特殊权限来运行程序或命令(通常以 root 用户身份运行命令),而无需切换使用环境。

默认情况下,在大多数 Linux 发行版中,/etc/sudoers 文件中 RunAs 规约的 ALL 关键字允许 admin 或 sudo 组中的所有用户以系统中的任何有效用户身份运行任何命令。如下图所示:

171039_wa9a_2720166.png

然而,在 Linux 系统中存在一条基本安全范式 —— 权限划分(privilege separation)。管理员可以配置 sudoers 文件,来指定哪些用户可以运行哪些命令。

如此一来,即使限制了用户以 root 用户身份运行特定命令或任何命令,该漏洞也可能允许用户绕过此安全策略并完全接管系统。

Sudo 开发者说到: “即便 RunAs 规约明确禁止 root 用户访问,但如果 Runas 规约文件中首先列出了 ALL 关键字,具有 sudo 权限的用户就可以使用它来以 root 身份运行任意命令。”

172552_hKsc_2720166.png

如何利用此漏洞?Sudo User ID -1 or 4294967295

据悉,该漏洞由苹果信息安全部门的 Joe Vennix 追踪发现(漏洞的 CVE ID 为 CVE-2019-14287 )。如果想要利用这个漏洞,只需按以下的方式运行即可:

sudo -u#-1 id -u
sudo -u#4294967295 id -u

不过我们也能看到这里存在一个这样的前提,那就是你的安全策略设置如下:

eviluser = (ALL, !root) /usr/bin/vi

然后这个 eviluser 就能够通过sudo -u#-1 vi命令以 root 身份运行vi

173430_rJr6_2720166.png

之所以会产生这个漏洞,是因为将用户 ID 转换为用户名的函数会将 -1(或无效等效的 4294967295)误认为是 0,而这正好是 root 用户 User ID 。此外,由于通过 -u 选项指定的 User ID 在密码数据库中不存在,因此不会运行任何 PAM 会话模块。

最后,快将 sudo 升级到 1.8.28 最新版本吧,新版本已于今天发布!该漏洞会影响 1.8.28 之前的所有版本。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK