CVE-2022-22583和CVE-2022-32800技术解析 你明白了吗
我们会在本文详细介绍如何使用不同的方法利用CVE-2022-22583的技术细节。我们还在本报告中讨论了CVE-2022-32800的技术细节。 苹果公司修复了PackageKit框架中的系统完整性保护(SIP)绕过漏洞,该漏洞被识别为CVE-2022-22583。 我们通过进程监控发现了这个漏洞。当我们将apple签名的软件安装包(PKG)文件安装到root volume时,我们注意到以下脚本是由特权“system_install”服务生成的: 因为“system_installd”服务具有特殊的“com.apple.rootless.install.heritable”权限,所以这两个脚本将在SIP绕过上下文中执行。 在看到这两个脚本位于“/tmp/PKInstallSandbox.l57ygT”目录后,我想到了以下问题: 我们可以修改临时位置内的脚本吗? 谁创建了带有随机后缀的临时文件夹“PKInstallSandbox”? 新创建的文件夹是否受SIP保护? 在这些问题的启发下,我们开始了调查。 通过反转和调试,我们发现临时文件夹是由" -[PKInstallSandbox prepareForCommitReturningError:] "函数创建的: “prepareForCommitXXX”函数的实现 在第16行,它调用另一个函数“-[PKInstallSandbox _createDirectory:uniquifying:error:]”,该函数在内部调用API“mkdtemp”来不受任何限制地创建文件夹。 “_createDirectory:uniquifying:”函数的实现 在看到“PKInstallSandbox.XXXXXXX”文件夹未受保护后,我们最初认为它可以被利用和操纵。然而,我们未能直接修改文件夹中的脚本。这是因为子文件夹“Scripts”受到限制,它从受限制的沙盒路径中移动,如上第25行所示。 至少有两种不同的方法来克服这个特殊的挑战并利用这个安全漏洞。 漏洞1:使用挂载技巧 第一个漏洞使用挂载技巧。Perception Point在其文章中对此进行了详细讨论。根据调查,挂载技巧可以通过以下步骤完成: 创建虚拟映像文件并将其装载到“/private/tmp”上; 使用安装后脚本安装Apple签名的软件包; 等待安装程序完成脚本目录的提取,并收集提取路径的随机部分; 卸载映像文件,这将恢复到提取前的“/private/tmp”内容; 创建脚本目录(使用我们之前获得的随机路径),并将我们想要的任何脚本放入其中。 Perception Point的文章还指出,这里讨论的漏洞取决于时间,可能不会一直成功。 漏洞2:使用符号链接 我们的漏洞使用了另一种方法:符号链接。此漏洞可通过以下步骤实现: 监视“/tmp/PKInstallSandbox.XXXXXXX”目录的创建,并将其替换为指向另一个“/tmp/fakebox”位置的符号链接,以将受限制的脚本重定向到那里; 一旦脚本位于“/tmp/fakebox”中,请删除符号链接并重新创建相同的“/tmp/PKInstallSandbox.XXXXXXX”目录,然后将有效负载脚本放在“/tmp/pKInstallSandox.XXXXXXX/scripts/pkgid.XXXXXX/”目录中; 等待有效负载脚本执行; 此漏洞的完整概念证明已上传到了GitHub上。 即使我们是root用户,也无法在受限目录“/Library/Apple”中创建文件,因为SIP状态已启用。但是在利用程序的帮助下,我们可以在SIP绕过上下文中执行任意命令,并在受限目录中成功创建文件。 (编辑:银川站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |