在 Snap 中发现两个漏洞并允许以 root 身份运行代码

Qualys 亮相 我确定的新闻 两个漏洞 (CVE-2021-44731 和 CVE-2021-44730) 在 snap-confine 实用程序中,与根 SUID 标志一起发送并由 snapd 进程调用以生成用于在 snap 包中分发的应用程序的可执行环境。

在博客文章中提到 漏洞允许非特权本地用户以root身份执行代码 在系统中。

第一个漏洞允许物理链接操纵攻击,但需要禁用系统硬链接保护(通过将 sysctl fs.protected_hardlinks 设置为 0)。

问题 这是由于对可执行文件位置的错误验证 snap-update-ns 和 snap-discard-ns 实用程序 以root身份运行。 这些文件的路径是在 sc_open_snapd_tool() 函数中根据来自 /proc/self/exe 的路径计算得出的,允许您创建硬链接以限制在您的目录中,并将您的选项设置为 snap-update-ns 和 snap -discard-ns 在这个目录中。 当从硬链接启动时,以 root 身份启动的 snap-confine 将从当前目录执行攻击者替换的 snap-update-ns 和 snap-discard-ns 文件。

成功利用此漏洞允许任何非特权用户在易受攻击的主机上获得 root 特权。 Qualys 安全研究人员已经能够独立验证漏洞、开发漏洞利用并获得默认 Ubuntu 安装的完全 root 权限。

Qualys 研究团队确认该漏洞后,我们立即进行了负责任的漏洞披露,并与供应商和开源发行版协调,宣布了这个新发现的漏洞。

第二个漏洞是由竞争条件引起的 并且可以在默认的 Ubuntu 桌面配置中被利用。 要使漏洞利用在 Ubuntu Server 上成功运行,您必须在安装期间从“Featured Server Snaps”部分中选择一个包。

比赛条件 显示在 setup_private_mount() 函数中 在为即时包准备挂载点命名空间期间调用。 此函数创建一个临时目录“/tmp/snap.$SNAP_NAME/tmp”或使用现有目录将 snap 包的目录链接和挂载到它。

由于临时目录的名称是可预测的,因此攻击者可以在验证所有者之后、调用挂载系统之前将其内容更改为符号链接。 例如,您可以在 /tmp/snap.lxd 目录中创建指向任意目录的符号链接“/tmp/snap.lxd/tmp”,并且 mount() 调用将跟随符号链接并将目录安装在空间中的名字。

同样,您可以将其内容安装在 /var/lib 中,并覆盖 /var/lib/snapd/mount/snap.snap-store.user-fstab,安排将 /etc 目录安装在包命名空间 snap 中以加载您的库通过替换 /etc/ld.so.preload 从 root 访问。

据观察, 创建一个漏洞利用被证明是一项不平凡的任务,因为 snap-confine 实用程序是使用安全编程技术编写的(snapd 是用 Go 编写的,但 C 用于 snap-confine),具有基于 AppArmor 配置文件的保护,基于 seccomp 机制过滤系统调用并使用挂载命名空间用于隔离。

然而,研究人员能够准备一个功能性漏洞利用 获得系统的root访问权限。 漏洞利用代码将在用户安装提供的更新后几周发布。

最后,值得一提的是问题已在 snapd 包更新中修复 适用于 Ubuntu 版本 21.10、20.04 和 18.04。

除了使用 Snap 的其他发行版之外,Snapd 2.54.3 已经发布,除了上述问题之外,它还修复了另一个漏洞 (CVE-2021-4120),它允许在安装专门设计的插件包时,覆盖任意 AppArmor 规则并绕过为包设置的访问限制。

如果你是 有兴趣了解更多关于它的信息, 您可以查看详细信息 在下面的链接中。


发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。