微软发现新的提权 Linux 漏洞 Nimbuspwn

admin 2022年5月10日22:46:21评论105 views字数 5617阅读18分43秒阅读模式

点击上方蓝字“Ots安全”一起玩耍

Microsoft 365 Defender 研究团队

Microsoft 了一个漏洞,系统可以称为在多个发现漏洞,可以在多个端点允许这些漏洞上攻击将权限为提升 root 权限。 root 后门,并通过任意 root 恶意操作。此外,更复杂的其他代码会作为恶意软件或勒索威胁软件)利用 Nimbuspwn 访问的载体,对执行易攻击的漏洞设备产生并可能执行的影响。


我们通过侦听系统任务上的消息发现了这些漏洞,同时对以root身份运行的服务执行代码审查和动态,分析注意到一个名为networkd -dispatcher的systemd单元中的模式。审查networkd -dispatcher的流代码发现这些安全问题,包括列出权限、使用时间链接的竞争条件问题,问题可用于提升和部署恶意软件或执行其他有害活动。我们通过微软安全漏洞研究(MSVR) )通过这些漏洞披露(CVD)与相关维护人员共同分享这些漏洞。漏洞的修复现在确定为协商CVE-2022-29799和CVE-2022-29800已由网络调度程序的维护者 Clayton Craft成功部署。我们要感谢顿在解决这些问题方面的专业精神和合作。鼓励网络调度程序的用户更新他们的。


组织环境在各种设备上提供平台保护和安全解决方案,持续支持他们的整体观点,以系统中的威胁,例如 Nimbuswn。随着Linux 环境越来越多的漏洞Microsoft Defender for Endpoint 使组织能够获得这种必要性并检测Linux 设备上的此类威胁,使组织能够不同平台(包括Windows、Linux、Mac) 、iOS和Android)检测、管理、响应和修复漏洞和威胁。


在这篇新博文中,我们将分享一些相关检查中还帮助我们的信息,并发现其中的漏洞。详细说明未知的和不断发现的领域如何我们发现的威胁以提高安全性,我们与更多的安全社区分享我们的研究,以突出保护平台和设备的细节。


背景 – D-Bus

D-Bus (“Desktop-Bus”的缩写)是由freedesktop.org允许开发一种进程间通信通道(IP)机制。通信方式:

  • 方法——用于请求-响应通信。

  • 信号——用于发布/订阅通信。


D-Bus 使用的一个示例是通过流行的视频会议应用程序可以接收视频聊天消息— —建立视频,视频会议应用程序发送 D-bus 信号呼叫开始。收听的应用程序可以制定适当的发布的回应——例如,静音它们的声音。


在流行的桌面环境中提供了默认组件 D-Bus 组件。由于这些组件的权限运行响应消息,因此 D-Bus 对攻击者来说是一个不同的目标。曾出现与有缺陷的 D-Bus 服务相关的有趣漏洞,USBCreator Elevation of Privilege、 Blueman Elevation of Privilege by command injection以及其他类似情况。


因为它的视线,系统的每一次监听连接器都提供了一个广泛的系统和运行机会。


D-Bus 名称改变

当到达一个组件时,其中的组件分配了一个唯一的组件,它可以在 PID 的连接时出现。唯一的使用点以显示的数字,例如“1.337”。使用 D-Bus API 来拥有可识别的名称,例如“org.freedesktop-Avahi”或“com.ubuntu.SystemService”。为了让 D-Bus 允许有这种情况,必须在 D-Bu 配置文件下允许请求的这些进程情况。这些配置在/usr/local/share/dbus-1/system.conf和/usr/local/share/dbus-1/session.conf (在某个文件上的/usr/dbus- 1直接)。具体来说,默认的system.conf有在包含的配置文件(通常在etc/dbus/system.d)中有说明,除非其他范围。

微软发现新的提权 Linux 漏洞 Nimbuspwn

图 1:系统总线和会话总线的不同所有权策略

此外,如果请求的名称已经存在——在拥有进程释放该名称之前,该请求不会被批准。


漏洞搜寻

我们的团队开始枚举,并在系统上执行我们的监听消息,并执行代码审查和动态分析。

  1. Blueman 中的目录信息披露https://github.com/blueman-project/blueman/security/advisories/GHSA-3r9p-m5c8-8mw8

  2. PackageKit 中的目录信息泄露 (CVE-2022-0987)https://access.redhat.com/security/cve/cve-2022-0987


它们可能很有趣,但它们的严重性——攻击者很可能是我们需要——高单元中部文件的权限下的文件。然后开始注意到一个名为网络调度程序的系统的有趣模式。 networkd-dispatcher的目标是调度网络状态变化,并根据新状态选择执行不同的脚本。就是,它以root身份在启动时运行:

微软发现新的提权 Linux 漏洞 Nimbuspwn

图 2:以 root 身份运行的networkd-dispatcher

网络调度程序的代码流

在检查networkd-dispatcher 源代码后,我们注意到一个有趣的流程:


  1. 注册函数为系统总线上的服务“ org.freedesktop.network1 ”注册一个新的信号接收器,信号名称为“ PropertiesChanged ”。

  2. “ _receive_signal ”信号处理程序将对正在发送的对象类型执行一些基本检查,根据正在发送的对象路径总结更改的网络接口,然后总结其新状态——“ OperationalState ”和“ AdministrativeState ”——每个都从数据。对于这些状态中的任何一个——如果它们不为空——“ handle_state ”方法将被调用。

  3. “ handle_state ”方法只是为这两个状态中的每一个调用“ _handle_one_state ”。

  4. “ _handle_one_state ” 验证状态不为空,并检查它是否与之前的状态不同。如果是,它将更新新状态并调用“ _run_hooks_for_state ”方法,该方法负责发现和运行新状态的脚本。

  5. “ _run_hooks_for_state ”实现如下逻辑:

  • 通过调用“ get_script_list ”方法(以字符串形式获取新状态)发现脚本列表。该方法简单地调用“ scripts_in_path ”,旨在返回“ /etc/networkd-dispatcher/<state>.d ”下的所有文件,这些文件属于root用户和root组,并且是可执行的。

  • 对脚本列表进行排序。

  • 使用subprocess.Popen运行每个脚本,同时提供自定义环境变量。

微软发现新的提权 Linux 漏洞 Nimbuspwn

图 3:_run_hooks_for_state 源代码——为简洁起见省略了一些部分


第 5 步有多个安全问题:

目录遍历( CVE-2022-29799 ):流程中的任何函数都不能清理OperationalState或AdministrativeState。由于状态用于构建脚本路径,因此状态可能包含目录遍历模式(例如“ ../../ ”)以从“ /etc/networkd-dispatcher ”基本目录中逃脱符号链接竞赛:脚本发现和subprocess.Popen都遵循符号链接。

Time-of-check-time-of-use ( TOCTOU ) 竞争条件 ( CVE-2022-29800 ):在发现脚本和运行脚本之间有一定的时间。攻击者可以利用此漏洞将networkd-dispatcher认为属于root 的脚本替换为不属于root 的脚本。

微软发现新的提权 Linux 漏洞 Nimbuspwn

图 4:在“scripts_in_path”方法中构建脚本列表,包括“subdir”中毒的易受攻击的代码。


开发

让操作者假设一个对手有一个可以选择任意信号的有害 D-Bus 组件。因此,攻击者可以执行以下操作:

  1. 准备一个目录“ /tmp/nimbuspwn ”并植入一个符号链接“ /tmp/nimbuspwn/poc.d ”以指向“ /sbin ”。之所以选择“/sbin”目录,是因为它有许多 root 拥有的可执行文件,如果在没有附加参数的情况下运行,这些可执行文件不会阻塞。这将滥用我们之前提到的符号链接竞争问题。

  2. 对于root拥有的“ /sbin ”下的每个可执行文件名,在“ /tmp/nimbuspwn ”下植入相同的文件名。例如,如果“ /sbin/vgs ”是可执行文件并归根用户所有,则使用所需的有效负载植入一个可执行文件“ /tmp/nimbuspwn/vgs ”。这将帮助攻击者赢得TOCTOU漏洞强加的竞争条件。

  3. 发送带有OperationalState “../../../tmp/nimbuspwn/poc”的信号。这滥用了目录遍历漏洞,逃逸了脚本目录。

  4. networkd-dispatcher信号处理程序启动并从目录“/etc/networkd-dispatcher/../../../tmp/nimbuspwn/poc.d”构建脚本列表,这实际上是符号链接(“/ tmp/nimbuspwn/poc.d”),它指向“/sbin”。因此,它创建了一个由 root 拥有的许多可执行文件组成的列表。

  5. 快速将符号链接“ /tmp/nimbuspwn/poc.d”更改为指向“ /tmp/nimbuspwn ”。这滥用了TOCTOU 竞争条件漏洞——脚本路径在 networkd -dispatcher不知情的情况下发生变化。

  6. 调度程序开始运行最初位于“ /sbin ”但实际上位于“ /tmp/nimbuspwn ”目录下的文件。由于调度程序“相信”这些文件由 root 拥有,它以 root 身份使用 subprocess.Popen 盲目地执行它们。因此,我们的攻击者成功地利用了该漏洞。

请注意,为了让 TOCTOU 获得更高的成就,展示了我们的实验条件,3 我们的表现是我们的实验结果。

微软发现新的提权 Linux 漏洞 Nimbuspwn

图 5:三个阶段的攻击流程图


不希望每次以root身份运行时都运行exploit,因此我们最终实现的payload会留下一个root后门:

  1. 将/bin/sh复制到/tmp/sh。

  2. 将新的/tmp/sh转换为Set-UID (SUID) 二进制文件。

  3. 运行/tmp/sh -p。“ -p ”标志是必要的,因为现代 shell 在设计上放弃了特权。


拥有名称

有多个听众发现,如果我们利用会利用“ org.freedesktop.network1 ”的简单名称,拥有会提升的权限。具体来说:

  1. 在许多环境(例如 Linux Mint)中,通常拥有“ org.freedesktop.network1 ”总线名称的服务systemd-networkd默认情况下不会在引导时启动。

  2. 使用Microsoft Defender for Endpoint 中的高级搜索,我们能够发现多个进程作为systemd-network用户(允许拥有我们需要的总线名称)从全球可写位置运行任意代码。其中包括允许将任意代码作为systemd-network运行的特定环境中的几个场景,例如从全局可写目录运行脚本。我们将其中一些场景归因于客户配置错误。


我们使用的查询也可以由 Microsoft Defender 为 Endpoint 客户运行:

DeviceProcessEvents| where Timestamp > ago(5d)    and AccountName == "systemd-network"    and isnotempty(InitiatingProcessAccountName)    and isnotempty(FileName)| project DeviceId, FileName, FolderPath, ProcessCommandLine

因此,我们能够利用这些场景并实现我们自己的漏洞利用:

微软发现新的提权 Linux 漏洞 Nimbuspwn

图 6:我们的漏洞利用实现并赢得了 TOCTOU 比赛


能够root运行任意脚本,但我们的漏洞利用将/bin复制到/tmp目录,将/tmp/sh设置为/tmp/ set-D(SUID)然后身份文件,调用“ /tmp/sh- ” p ”。请注意,“- p标志强制壳不授予特权”是必须的。


加固设备安全与检测策略

而利用不断发展的新威胁但环境会定期提供威胁、技术和攻击能力,攻击仍会继续用于识别和访问未修复的漏洞和错误配置,以用于系统、网络和敏感信息以对恶意不利的配置的方法是利用和解决以前广泛应用的平台、持续轰炸式等领域突出问题的方法,可以进一步识别和缓解未知漏洞的利用和利用和缓解。


微软的威胁和漏洞管理监控监控其全面的漏洞利用功能,可以利用智能的发现功能和安全性提供组织式的帮助我们对风险的实时监控。来改进解决方案,我们的威胁和漏洞管理已发布 CVE-2022-29799 和 CVE-2022-29800,并在 Microsoft Defender for End's 威胁和漏洞模块中多次受到攻击的设备。


为了具体的漏洞,Microsoft Defender for point 的终结和响应 (EDR)功能利用所需的目录遍历通用。该检测在没有先验知识的情况下检测到我们的漏洞利用。

微软发现新的提权 Linux 漏洞 Nimbuspwn

图 7:Microsoft Defender for Endpoint 检测到我们的漏洞利用中使用的可疑 SUID 进程


防御不断变化的威胁情况需要保护和保护用户计算体验的能力,无论是Windows还是非Windows设备。微软通过每天保护所有主要平台上的用户和组织的强大研究不断丰富我们的保护技术。该展示了专家、跨行业情报协作来协调研究的能力对于有效缓解易受攻击问题的影响,不管如何如何解决问题的设备或平台。大的安全社区合作,努力为所有人建立更好的保护。


Microsoft 365 Defender 研究团队



微软发现新的提权 Linux 漏洞 Nimbuspwn
精彩推荐



Java安全相关的漏洞和技术漏洞利用Dubbo-Hessian2安全加固等等实践代码等
Microsoft Windows 资源管理器预览窗格安全绕过
【漏洞预警】CVE-2021-34486:Windows 事件跟踪 (ETW)TimerCallbackContex

微软发现新的提权 Linux 漏洞 Nimbuspwn

原文始发于微信公众号(Ots安全):微软发现新的提权 Linux 漏洞 Nimbuspwn

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月10日22:46:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   微软发现新的提权 Linux 漏洞 Nimbuspwnhttp://cn-sec.com/archives/994974.html

发表评论

匿名网友 填写信息