曲速未來 披露:由macOS NFS客戶端中的緩沖區(qū)溢出引起的內(nèi)核RCE區(qū)塊鏈

                  曲速未來安全區(qū) 2018-11-01 10:32
                  分享到:
                  導(dǎo)讀

                  曲速未來:為Apple的macos操作系統(tǒng)內(nèi)核編寫的自定義QL查詢發(fā)現(xiàn)了多個堆棧和堆緩沖區(qū)溢出,這些溢出可通過連接到惡意NFS文件服務(wù)器來觸發(fā)。

                  區(qū)塊鏈安全咨詢公司 曲速未來 消息:有安全人員在Apple的macOS操作系統(tǒng)內(nèi)核中發(fā)現(xiàn)的幾個堆棧和堆緩沖區(qū)溢出。Apple將這些漏洞歸類為內(nèi)核中的遠(yuǎn)程代碼執(zhí)行漏洞,因此它們非常嚴(yán)重。攻擊者可能會利用它們遠(yuǎn)程入侵Mac。或者,通過物理訪問計(jì)算機(jī),攻擊者可以作為訪客用戶登錄(無需密碼),然后使用這些漏洞提升其權(quán)限并控制計(jì)算機(jī)。

                  這些漏洞存在于客戶端NFS實(shí)現(xiàn)中,用于將網(wǎng)絡(luò)驅(qū)動器(如NAS)安裝到Mac的文件系統(tǒng)中。

                  嚴(yán)重程度和緩解

                  這些漏洞已在Android版本10.13.6中得到修復(fù),Apple于2018年7月9日發(fā)布了該版本。Apple要求安全人員不要透露漏洞,直到另行通知為止。這就是他們所說的:

                  NFS被廣泛使用,特別是在大型企業(yè)中,它用于共享驅(qū)動器和聯(lián)網(wǎng)的主目錄。但它也用于家庭NAS設(shè)備,通常用作媒體服務(wù)器。在macOS中,安裝NFS共享不需要特殊權(quán)限,因此任何用戶都可以觸發(fā)漏洞,甚至是訪客帳戶(不需要密碼)。此外,許多計(jì)算機(jī)(尤其是企業(yè)環(huán)境中的計(jì)算機(jī))配置為在啟動時(shí)自動掛載NFS共享。這意味著這些漏洞至少有兩個攻擊媒介:

                  1. 這些漏洞可能被用于在使用NFS文件管理器的公司中快速傳播病毒。要做到這一點(diǎn),攻擊者需要在文件管理器上安裝惡意版本的NFS服務(wù)器軟件,或者找到一種方法將惡意文件管理器放在網(wǎng)絡(luò)上并開始攔截某些NFS流量。

                  2. 這些漏洞可用于獲取升級的權(quán)限。例如,有人可能以guest用戶身份登錄,然后發(fā)出單行命令連接到惡意NFS服務(wù)器(可能是Internet上的任何位置),并在計(jì)算機(jī)上獲得內(nèi)核級訪問權(quán)限。

                  Apple分配了五個CVE,因?yàn)榇a包含多個類似的錯誤:CVE-2018-4259,CVE-2018-4286,CVE-2018-4287,CVE-2018-4288和CVE-2018-4291。為避免意外泄露任何可能未修復(fù)的錯誤,所以只寫關(guān)于Apple工作概念驗(yàn)證漏洞的兩個漏洞。

                  概念驗(yàn)證漏洞利用

                  安全人員編寫了一個概念驗(yàn)證漏洞,它用0覆蓋4096字節(jié)的堆內(nèi)存并導(dǎo)致內(nèi)核崩潰。還可以改變利用率來發(fā)送盡可能多的數(shù)據(jù)。任何大于128字節(jié)的數(shù)字都會觸發(fā)堆緩沖區(qū)溢出。也完全控制了寫入的字節(jié)值。因此,盡管PoC只破壞了內(nèi)核,但可以合理地假設(shè)可以使用這些緩沖區(qū)溢出來實(shí)現(xiàn)遠(yuǎn)程代碼執(zhí)行和本地權(quán)限提升。

                  漏洞

                  安全人員編寫PoC的兩個漏洞是在這個看似無害的代碼行中(nfs_vfsops.c:4151):

                  這行代碼的目的是fh從nmrepNFS服務(wù)器發(fā)送回Mac的回復(fù)消息()中讀取文件句柄()。文件句柄是NFS共享上的文件或目錄的不透明標(biāo)識符。NFSv3中的文件句柄最多為64個字節(jié),NFSv4中的文件句柄最多為128個字節(jié)(搜索FHSIZE)。fhandle_tXNU中的類型有足夠的空間容納128字節(jié)的文件句柄,但是他們忘記檢查nfsm_chain_get_fh宏中的緩沖區(qū)溢出:

                  由于宏的大量使用,這段代碼很難遵循,但它的作用實(shí)際上非常簡單:它從消息中讀取一個32位無符號整數(shù)(FHP)->fh_len,然后直接從消息中讀取該字節(jié)數(shù)(FHP)->fh_data。沒有邊界檢查,因此攻擊者可以使用他們選擇的任何字節(jié)序列覆蓋任意數(shù)量的內(nèi)核堆。被覆蓋的文件句柄的內(nèi)存在nfs_socket.c:1401中分配。

                  安全人員寫的PoC for的第二個錯誤是nfsm_chain_get_opaque宏中的整數(shù)溢出:

                  此代碼使用nfsm_rndup宏圓LEN高達(dá)4的倍數(shù),但它使用的原始值LEN的調(diào)用bcopy。如果值LEN是0xFFFFFFFF然后加入在nfsm_rndup將溢出和的值rndlen將是0。這意味著與比較(NMC)->nmc_left會成功,bcopy將與被調(diào)用0xFFFFFFFF作為大小參數(shù)。這當(dāng)然會導(dǎo)致內(nèi)核崩潰,因此它只能用作拒絕服務(wù)攻擊。

                  使用QL查找錯誤

                  QL的一大優(yōu)勢是能夠找到已知錯誤的變種。今年早些時(shí)候,就有安全人員在Apple的NFS無盤啟動實(shí)現(xiàn)中發(fā)現(xiàn)了兩個漏洞,CVE-2018-4136和CVE-2018-4160。該查詢旨在查找bcopy可能具有用戶控制的大小參數(shù)的調(diào)用,該參數(shù)可能為負(fù)。一個簡單的變化是查找bcopy用戶控制源緩沖區(qū)的調(diào)用。這樣的調(diào)用可能很有趣,因?yàn)樗鼈儗⒂脩艨刂频臄?shù)據(jù)復(fù)制到內(nèi)核空間中。

                  上面的查詢相當(dāng)簡單,因?yàn)樗檎覍copy從mbuf內(nèi)核空間復(fù)制數(shù)據(jù)的任何調(diào)用。只要正確檢查size參數(shù)的邊界,這樣的調(diào)用就沒有錯。然而事實(shí)證明,很大一部分結(jié)果是nfsm_chain_get_fh宏的使用,它不進(jìn)行任何邊界檢查。因此,盡管此查詢很簡單,但它發(fā)現(xiàn)了許多重要的安全漏洞。在其當(dāng)前形式中,即使修復(fù)了錯誤,查詢?nèi)詫⒗^續(xù)報(bào)告相同的結(jié)果。最好改進(jìn)查詢,以便在有適當(dāng)?shù)倪吔鐧z查時(shí)不會報(bào)告結(jié)果。

                  實(shí)現(xiàn)邊界檢查的常用方法是這樣的:

                  還寫了這個謂詞來檢測上面的模式:

                  它使用Guards庫來查找在受控制的控制流位置中使用的大小表達(dá)式guard。然后它使用globalValueNumber庫來檢查條件本身是否出現(xiàn)相同大小的表達(dá)式。該GlobalValueNumbering庫使謂詞能夠檢測非平凡大小表達(dá)式的相等性,如下所示:

                  最后,它使用一個名為的實(shí)用程序relOpWithSwapAndNegate來檢查size表達(dá)式是否小于限制。它使謂詞也能處理這樣的場景:

                  有時(shí)實(shí)現(xiàn)邊界檢查的另一種方式是通過調(diào)用min,如此謂詞所檢測到的:

                  然后將這兩個謂詞組合如下:

                  請注意,習(xí)慣lowerBound確保不存在負(fù)整數(shù)溢出的可能性。唯一剩下要做的就是checkedSize在isSink方法中使用,以減少誤報(bào)的數(shù)量。這是完成的查詢:

                  總結(jié)

                  區(qū)塊鏈安全咨詢公司 曲速未來 表示:與大多數(shù)其他開源項(xiàng)目不同,XNU無法在LGTM上查詢。這是因?yàn)長GTM使用Linux工作程序來構(gòu)建項(xiàng)目,但XNU只能在Mac上構(gòu)建。即使在Mac上,XNU也非常容易構(gòu)建。

                  本文內(nèi)容由 曲速未來 (WarpFuture.com) 安全咨詢公司整理編譯,轉(zhuǎn)載請注明。 曲速未來提供包括主鏈安全、交易所安全、交易所錢包安全、DAPP開發(fā)安全、智能合約開發(fā)安全等相關(guān)區(qū)塊鏈安全咨詢服務(wù)。

                  使用 漏洞 安全 NFS 內(nèi)核
                  分享到:

                  1.TMT觀察網(wǎng)遵循行業(yè)規(guī)范,任何轉(zhuǎn)載的稿件都會明確標(biāo)注作者和來源;
                  2.TMT觀察網(wǎng)的原創(chuàng)文章,請轉(zhuǎn)載時(shí)務(wù)必注明文章作者和"來源:TMT觀察網(wǎng)",不尊重原創(chuàng)的行為TMT觀察網(wǎng)或?qū)⒆肪控?zé)任;
                  3.作者投稿可能會經(jīng)TMT觀察網(wǎng)編輯修改或補(bǔ)充。