Nimbuspwn 存在于 networkd-dispatcher 组件,该组件用于在 Linux 设备上发送连接状态变化,目前已经以 CVE-2022-29799和CVE-2022-29800进行追踪。
发现这些漏洞是从“监听系统总线上的消息”开始的,这促使研究人员审查 networkd-dispatcher 的代码流。微软研究员Jonathan Bar Or在报告中解释说,Nimbuspwn 的安全缺陷是指目录穿越、符号链接竞赛和检查时间-使用时间(TOCTOU)竞赛条件问题。
一个引起兴趣的观察结果是,networkd-dispatcher守护进程在启动时以系统的根权限运行。研究人员注意到,该守护进程使用了一种名为"_run_hooks_for_state"的方法,根据检测到的网络状态发现并运行脚本。
它使用名为 subprocess.Popen 的进程运行上述位置的每个脚本,同时提供自定义环境变量。微软的报告解释说,"_run_hooks_for_state"有多个安全问题。
- 目录遍历(CVE-2022-29799):流程中没有一个函数对OperationalState或AdministrativeState进行消毒。这些状态被用来建立脚本路径,因此一个状态可能包含目录遍历模式(例如".../.../"),以逃离"/etc/networkd-dispatcher"基本目录。
- 符号链接竞赛:脚本发现和subprocess.Popen都遵循符号链接。
- 检查时间-使用时间(TOCTOU)竞赛条件(CVE-2022-29800):脚本被发现和它们被运行之间有一定时间。攻击者可以滥用这个漏洞,将networkd-dispatcher认为由root拥有的脚本替换成不属于root的脚本。