偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

CVE-2022-22583和CVE-2022-32800技術(shù)分析,你明白了嗎?

安全 漏洞
我們會(huì)在本文詳細(xì)介紹如何使用不同的方法利用CVE-2022-22583的技術(shù)細(xì)節(jié)。我們還在本報(bào)告中討論了CVE-2022-32800的技術(shù)細(xì)節(jié)。

我們會(huì)在本文詳細(xì)介紹如何使用不同的方法利用CVE-2022-22583的技術(shù)細(xì)節(jié)。我們還在本報(bào)告中討論了CVE-2022-32800的技術(shù)細(xì)節(jié)。

2022年1月26日,蘋果公司修復(fù)了PackageKit框架中的系統(tǒng)完整性保護(hù)(SIP)繞過漏洞,該漏洞被識(shí)別為CVE-2022-22583。

Perception Point發(fā)布了一篇關(guān)于該漏洞及其利用細(xì)節(jié)的文章后,我們確定我們利用該漏洞的方法與他們的不同。在深入挖掘CVE-2022-22583之后,我們還發(fā)現(xiàn)了一個(gè)新的漏洞CVE-2022-32800。

這篇文章討論了我們?nèi)绾问褂貌煌姆椒ɡ肅VE-2022-22583的技術(shù)細(xì)節(jié)。關(guān)于SIP和特殊守護(hù)進(jìn)程服務(wù)的權(quán)利的更多詳細(xì)信息可以在我們上個(gè)月的文章中找到。我們還會(huì)討論在2022年社區(qū)力量安全會(huì)議(POC2022)期間向蘋果披露的15個(gè)以上關(guān)鍵SIP繞過漏洞中的幾個(gè)。

CVE-2022-22583

CVE-2022-22583的安全漏洞

我們通過進(jìn)程監(jiān)控發(fā)現(xiàn)了這個(gè)漏洞。當(dāng)我們將apple簽名的軟件安裝包(PKG)文件安裝到root volume時(shí),我們注意到以下腳本是由特權(quán)“system_install”服務(wù)生成的:

CVE-2022-22583和CVE-2022-32800技術(shù)分析

因?yàn)椤皊ystem_installd”服務(wù)具有特殊的“com.apple.rootless.install.heritable”權(quán)限,所以這兩個(gè)腳本將在SIP繞過上下文中執(zhí)行。

在看到這兩個(gè)腳本位于“/tmp/PKInstallSandbox.l57ygT”目錄后,我想到了以下問題:

我們可以修改臨時(shí)位置內(nèi)的腳本嗎?

誰(shuí)創(chuàng)建了帶有隨機(jī)后綴的臨時(shí)文件夾“PKInstallSandbox”?

新創(chuàng)建的文件夾是否受SIP保護(hù)?

在這些問題的啟發(fā)下,我們開始了調(diào)查。

通過反轉(zhuǎn)和調(diào)試,我們發(fā)現(xiàn)臨時(shí)文件夾是由" -[PKInstallSandbox prepareForCommitReturningError:] "函數(shù)創(chuàng)建的:

CVE-2022-22583和CVE-2022-32800技術(shù)分析

“prepareForCommitXXX”函數(shù)的實(shí)現(xiàn)

在第16行,它調(diào)用另一個(gè)函數(shù)“-[PKInstallSandbox _createDirectory:uniquifying:error:]”,該函數(shù)在內(nèi)部調(diào)用API“mkdtemp”來不受任何限制地創(chuàng)建文件夾。

CVE-2022-22583和CVE-2022-32800技術(shù)分析

“_createDirectory:uniquifying:”函數(shù)的實(shí)現(xiàn)

在看到“PKInstallSandbox.XXXXXXX”文件夾未受保護(hù)后,我們最初認(rèn)為它可以被利用和操縱。然而,我們未能直接修改文件夾中的腳本。這是因?yàn)樽游募A“Scripts”受到限制,它從受限制的沙盒路徑中移動(dòng),如上第25行所示。

至少有兩種不同的方法來克服這個(gè)特殊的挑戰(zhàn)并利用這個(gè)安全漏洞。

漏洞1:使用掛載技巧

第一個(gè)漏洞使用掛載技巧。Perception Point在其文章中對(duì)此進(jìn)行了詳細(xì)討論。根據(jù)調(diào)查,掛載技巧可以通過以下步驟完成:

創(chuàng)建虛擬映像文件并將其裝載到“/private/tmp”上;

使用安裝后腳本安裝Apple簽名的軟件包;

等待安裝程序完成腳本目錄的提取,并收集提取路徑的隨機(jī)部分;

卸載映像文件,這將恢復(fù)到提取前的“/private/tmp”內(nèi)容;

創(chuàng)建腳本目錄(使用我們之前獲得的隨機(jī)路徑),并將我們想要的任何腳本放入其中。

Perception Point的文章還指出,這里討論的漏洞取決于時(shí)間,可能不會(huì)一直成功。

漏洞2:使用符號(hào)鏈接

我們的漏洞使用了另一種方法:符號(hào)鏈接。此漏洞可通過以下步驟實(shí)現(xiàn):

監(jiān)視“/tmp/PKInstallSandbox.XXXXXXX”目錄的創(chuàng)建,并將其替換為指向另一個(gè)“/tmp/fakebox”位置的符號(hào)鏈接,以將受限制的腳本重定向到那里;

一旦腳本位于“/tmp/fakebox”中,請(qǐng)刪除符號(hào)鏈接并重新創(chuàng)建相同的“/tmp/PKInstallSandbox.XXXXXXX”目錄,然后將有效負(fù)載腳本放在“/tmp/pKInstallSandox.XXXXXXX/scripts/pkgid.XXXXXX/”目錄中;

等待有效負(fù)載腳本執(zhí)行;

此漏洞的完整概念證明已上傳到了GitHub上。我們的概念驗(yàn)證演示也可以在下圖中看到。

CVE-2022-22583和CVE-2022-32800技術(shù)分析

使用symlink的漏洞演示

即使我們是root用戶,也無法在受限目錄“/Library/Apple”中創(chuàng)建文件,因?yàn)镾IP狀態(tài)已啟用。但是在利用程序的幫助下,我們可以在SIP繞過上下文中執(zhí)行任意命令,并在受限目錄中成功創(chuàng)建文件。

蘋果CVE-2022-22583的補(bǔ)丁

“installd”服務(wù)和“system_installd”服務(wù)的操作方式有點(diǎn)混亂。在下圖中,我們可以看到第17行和第18行的補(bǔ)丁代碼區(qū)分了這兩種服務(wù):

CVE-2022-22583和CVE-2022-32800技術(shù)分析

CVE-2022-22583的補(bǔ)丁

對(duì)于蘋果簽署的軟件包,該補(bǔ)丁使用“OpenPath”及其自己的受限沙盒路徑。對(duì)于其他包,它仍然使用“/tmp”目錄中的隨機(jī)路徑。

安裝沙盒

在介紹CVE-2022-32800之前,我們需要了解一些與“安裝沙盒”相關(guān)的概念。

Sandbox Repository

首先,讓我們看一下“Sandbox Repository”,這是一個(gè)由“-[PKInstallSandboxManager _sandboxRepositoryForDestination:forSystemSoftware:create:error:]”函數(shù)返回和創(chuàng)建的目錄。

CVE-2022-22583和CVE-2022-32800技術(shù)分析

“_sandboxRepositoryForDestination:XXX”函數(shù)的實(shí)現(xiàn)

總之,有四種Sandbox Repository:

安裝目標(biāo)為root volume“/”:

a.對(duì)于Apple簽名的pkg: /Library/Apple/System/Library/InstallerSandboxes/.PKInstallSandboxManager-SystemSoftware;

b.其他pkg: /Library/InstallerSandboxes/.PKInstallSandboxManager;

安裝目標(biāo)不是root volume:

a.對(duì)于apple簽名的pkg: $targetVolume/.PKInstallSandboxManager-SystemSoftware;

b.其他pkg: $targetVolume/.PKInstallSandboxManager;

需要注意的是,只有當(dāng)apple簽名包安裝到root volume時(shí),Sandbox Repository才會(huì)受到限制。

沙盒路徑

“沙盒路徑”用于在安裝期間存儲(chǔ)腳本和有效載荷等文件。

它是“Sandbox Repository”中的一個(gè)目錄,由“[PKInstallSandboxManager addSandboxPathForDestination:forSystemSoftware:]_block_invoke”方法創(chuàng)建:

CVE-2022-22583和CVE-2022-32800技術(shù)分析

實(shí)現(xiàn)“addSandboxPathForDestination:XXX”函數(shù)

沙盒路徑有四種,每種路徑都有一個(gè)通用唯一標(biāo)識(shí)符(UUID)名稱,表示它們特定的沙盒狀態(tài):

UUID.sandbox:創(chuàng)建的第一個(gè)狀態(tài);

UUID.activeSandbox:激活狀態(tài),正在使用中;

UUID.trashedSandbox:停用狀態(tài),被丟棄;

UUID.orphanedSandbox:孤立狀態(tài),如果磁盤空間不足,將進(jìn)行清理;

PKInstallSandbox

" PKInstallSandbox "是一個(gè)用于抽象和封裝的Objective-C類名:

CVE-2022-22583和CVE-2022-32800技術(shù)分析

通過“-[PKInstallSandbox initWithSandboxPath:installRequest:error:]”方法初始化“PKInstallSandbox”的新實(shí)例,這取決于沙盒路徑和安裝請(qǐng)求。

請(qǐng)注意,該實(shí)例是可序列化的,并且該類實(shí)現(xiàn)了“NSSecureCoding”協(xié)議?!皊ystem_installd”服務(wù)可以通過“-[PKInstallSandboxManager saveSandboxAsStaged:]”方法將實(shí)例保存或序列化到沙盒路徑中名為“SandboxState”的文件中:

CVE-2022-22583和CVE-2022-32800技術(shù)分析

“saveSandboxAsStaged”函數(shù)的實(shí)現(xiàn)

“PKInstallSandbox”實(shí)例也可以稍后通過“-[PKInstallSandboxManager_sandboxAtPath:matchingRequest:forUse:]”方法從“SandboxState”文件還原或反序列化:

CVE-2022-22583和CVE-2022-32800技術(shù)分析

“sandboxAtPath:matchingRequest:XXX”函數(shù)的實(shí)現(xiàn)

注意,在第57行有一個(gè)檢查,它要求恢復(fù)的安裝請(qǐng)求與從安裝客戶端傳遞的安裝請(qǐng)求深度相等。這項(xiàng)檢查給我們的開發(fā)程序帶來了一個(gè)小小的挑戰(zhàn)。

在安裝之前,“system_installd”服務(wù)需要根據(jù)“-[PKInstallSandboxManagersandboxForRequest:created:error:]”函數(shù)中的安裝請(qǐng)求獲取“PKInstallSandbox”的實(shí)例。

該函數(shù)的核心邏輯如下:

首先,它將從“sandbox Repository”中枚舉所有帶有“.ssandbox”后綴的文件夾,然后從內(nèi)部的“SandboxState”文件中恢復(fù)“PKInstallSandbox”實(shí)例。

CVE-2022-22583和CVE-2022-32800技術(shù)分析

枚舉帶有“.ssandbox”后綴的所有文件夾

接下來,如果它找不到與安裝請(qǐng)求匹配的“PKInstallSandbox”實(shí)例,那么它將枚舉帶有“.activeSandbox”后綴的所有文件夾,并嘗試從這些位置還原它們。

CVE-2022-22583和CVE-2022-32800技術(shù)分析

枚舉帶有“.activeSandbox”后綴的所有文件夾

最后,如果它仍然不能匹配這樣的沙盒,它將創(chuàng)建一個(gè)新的“沙盒路徑”,并構(gòu)造一個(gè)新的“PKInstallSandbox”實(shí)例。

CVE-2022-22583和CVE-2022-32800技術(shù)分析

創(chuàng)建一個(gè)新的“沙盒路徑”和實(shí)例

CVE-2022-32800

漏洞詳細(xì)信息

CVE-2022-32800漏洞允許攻擊者劫持“SandboxState”文件以獲取SIP繞過原語(yǔ)。

“SandboxState”文件存儲(chǔ)在“Sandbox路徑”中,該路徑位于“Sandbox Repository”中。在正常情況下,“Sandbox存儲(chǔ)庫(kù)”僅限于Apple簽名的軟件包。

但是,如果安裝目標(biāo)是DMG(磁盤映像)卷,則根本不限制“Sandbox Repository”。“SandboxState”文件也是如此。因此,我們可以制作一個(gè)特制的“SandboxState”文件,在反序列化過程中劫持新的“PKInstallSandbox”實(shí)例。然后可以控制“PKInstallSandbox”實(shí)例的所有成員變量。

漏洞利用

有不同的方法可以利用這個(gè)漏洞。例如,在下圖中,我們劫持了成員“_cleanupPaths”,以獲取一個(gè)原語(yǔ)來刪除任意的SIP保護(hù)路徑。

安裝完成后,無論是否成功,它都將調(diào)用“-[PKInstallSandboxManager_removeSandbox:]”函數(shù)刪除沙盒,并刪除“_cleanupPaths”成員指定的所有文件和文件夾。

CVE-2022-22583和CVE-2022-32800技術(shù)分析

“_removeSandbox”函數(shù)的實(shí)現(xiàn)

該漏洞的完整概念證明可以在GitHub找到,演示視頻可以在此查看。

蘋果CVE-2022-32800的補(bǔ)丁

蘋果在macOS 12.5中修復(fù)了這一安全漏洞。

補(bǔ)丁位于“-[PKInstallSandboxManager _sandboxAtPath:matchingRequest:forUse:]”函數(shù)中:

CVE-2022-22583和CVE-2022-32800技術(shù)分析

CVE-2022-32800補(bǔ)丁

正如我們?cè)诘?8行檢查中看到的,它在內(nèi)部調(diào)用“PKSIPFullyProtectedPath”函數(shù):

CVE-2022-22583和CVE-2022-32800技術(shù)分析

“PKSIPFullyProtectedPath”函數(shù)的實(shí)現(xiàn)

對(duì)于Apple簽名的軟件包,“SandboxState”文件需要受信任或限制。

安全建議

為了成功地保護(hù)系統(tǒng)免受漏洞攻擊,用戶必須定期更新其操作系統(tǒng)。定期應(yīng)用安全補(bǔ)丁將阻止攻擊者利用漏洞提升權(quán)限并發(fā)起惡意攻擊。關(guān)于此處討論的漏洞,CVE-2022-22583于2022年1月修補(bǔ),CVE-2022 2-32800于2022年7月修補(bǔ)。

最終用戶可以受益于安全解決方案,如趨勢(shì)科技Mac版防病毒軟件和趨勢(shì)科技防護(hù)套件,它們有助于檢測(cè)和阻止利用此類漏洞的攻擊。

本文翻譯自:https://www.trendmicro.com/en_us/research/22/l/a-technical-analysis-of-cve-2022-22583-and-cve-2022-32800.html

責(zé)任編輯:武曉燕 來源: 嘶吼網(wǎng)
相關(guān)推薦

2022-06-14 09:00:21

漏洞補(bǔ)丁

2022-02-10 11:52:10

Windows漏洞Windows 10

2023-12-08 09:00:00

漏洞攻擊

2022-12-09 14:32:53

2022-04-14 18:25:51

補(bǔ)丁漏洞網(wǎng)絡(luò)攻擊

2015-03-13 18:08:49

2022-02-21 14:02:34

技術(shù)人工智能網(wǎng)絡(luò)安全

2022-03-05 17:56:29

桌面應(yīng)用開發(fā)

2015-09-18 09:17:06

數(shù)據(jù)分析

2023-02-14 08:33:30

2015-09-18 09:33:03

2022-12-30 08:35:00

2022-09-27 07:31:57

Property模式數(shù)據(jù)

2023-12-28 08:43:28

前端算法搜索

2022-04-07 11:15:22

PulseEventAPI函數(shù)

2022-10-19 08:19:32

動(dòng)態(tài)基線預(yù)警

2024-01-08 20:05:32

2022-10-10 18:38:56

inert屬性鍵盤

2023-12-08 08:38:15

EventLoopAPI瀏覽器

2017-05-25 22:20:05

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)