目錄
相關部落格
就 iPhone 而言,「越獄」(在第一個 iOS 版本甚至還未被命名為「iOS」之前就已出現)一詞結合了技術和擺脫限制的概念:
- 監獄: 最初指的是一種比喻意義上的監獄或禁錮。在iPhone的語境中,它代表蘋果公司對在其iOS作業系統上運行的第三方應用程式施加的限制。蘋果透過其App Store政策和系統安全措施,對用戶在其設備上的操作進行嚴格控制。這些限制包括禁止從App Store以外的來源安裝應用程式、禁止自訂裝置的外觀和功能,以及禁止存取作業系統的內部機制。
- 打破: 意味著逃脫或掙脫束縛。在iPhone越獄的脈絡中,它指的是繞過或規避蘋果iOS系統設定的限制。這個過程涉及利用iOS系統中的漏洞來取得root權限或管理員權限,從而允許使用者以蘋果通常不允許的方式修改裝置。
越獄iPhone會賦予最終使用者完整的執行和寫入權限。因此,總而言之,在iPhone的脈絡下,「越獄」本質上是指擺脫蘋果iOS系統施加的限制,使用戶能夠更好地控制自己的裝置並根據喜好進行自訂。這個詞體現了將iPhone從蘋果限制的「牢籠」中解放出來的理念,讓使用者在使用裝置時擁有更大的自由度和靈活性。
想要解放手機的願望催生了一個越獄“社區”,成員包括駭客、好奇的用戶等等。 威脅者就像任何一個有自尊的社區一樣,Reddit 群組(r/越獄隨著越獄社群的形成,YouTube頻道不斷湧現(又被刪除),暗網/灰色網路也為社群成員分享越獄技巧、方法和步驟提供了支持。越獄一直以來都備受追捧,那些發現、實施並分享越獄方法的人會在越獄社區中獲得名聲或惡名。
請注意,越獄可能會使保固失效,並可能涉及法律問題,因此蘋果官方並不支持或鼓勵越獄。另請注意,雖然「突破」蘋果的政策會使保固失效,但這本身並不違法,而且許多越獄社群成員認為參與越獄是他們的權利甚至義務,並非出於惡意目的。雖然駭客、威脅行為者和惡作劇愛好者組成的群體已經鬆散地形成了一個草根越獄社區,致力於阻撓蘋果公司對其操作系統的封鎖,但一個以盈利為目的的iOS破解產業也已經興起。像NSO、Cellebrite和Paragon這樣的公司提供收費的複雜越獄技術;世界各地的執法機構和政府——儘管他們不願公開承認——也參與其中。 幾乎可以肯定 充分利用這些服務。
在世界上的 應用安全越獄之所以如此重要,是因為任何攻擊者想要篡改應用程式時,首先要做的事情之一就是越獄手機,以確保修改後的應用程式能夠運行。換句話說,雖然越獄手機本身並不違法,甚至不違反道德,但在大多數情況下,越獄是實際使用被篡改應用程式的必要步驟。因此,檢測已越獄的手機對於任何威脅都至關重要。 應用硬化 的解決方案。
同時,蘋果公司一直投入大量時間、金錢、精力和智慧,致力於徹底阻止越獄。隨著時間的推移,越獄變得越來越複雜,由於蘋果不斷改進安全措施,往往需要利用多種漏洞才能完全越獄設備。蘋果阻止越獄的努力由來已久,堪稱一場貓捉老鼠的遊戲,這場遊戲既推動了越獄「社群」的創新,也促進了蘋果自身的發展。
雖然越獄檢測對於確保公開應用程式的安全至關重要,但並非所有越獄都一樣;有些越獄甚至不會構成重大的安全威脅。
本文將 1) 描述 iPhone 越獄的演變,2) 詳細說明哪些類型的越獄能夠從根本上獲得對系統資源的完全存取權限,以及哪些越獄是傳統越獄的低端版本。
iOS與越獄的共同演進
圖1:一群在DEF CON大會上歡慶的越獄者(2011年8月)。圖片來源:Dreamyshade – 自行拍攝,CC BY-SA 4.0,https://commons.wikimedia.org/w/index.php?curid=38871495
早期:BootROM漏洞利用
最初,越獄主要針對的是 bootROM,它是 iOS 裝置啟動過程的基礎元件。 bootROM 是一段底層軟體,永久嵌入硬體中,因此針對該層的攻擊威力巨大。對 bootROM 的攻擊會影響整個信任鏈:引導程式、內核,最終甚至會影響使用者空間。成功利用 bootROM 漏洞可以獲得對設備的絕對存取權限,從而進行永久性修改,即使軟體更新和重置也無法阻止這些修改。這段時期湧現出許多著名的漏洞,例如… 檸檬酸 Pwnage工具這使得 iPhone 可以大規模解鎖,從而可以安裝自訂韌體和進行深度系統修改。
轉向 iBoot 的轉變:引導程式漏洞
隨著蘋果加強了啟動ROM的安全性,攻擊者將目光轉向了iOS啟動過程的下一階段—iBoot。雖然像redsn0w和Sn0wbreeze這樣的啟動載入器漏洞不如啟動ROM漏洞那麼持久,但仍能讓攻擊者對裝置擁有廣泛的控制權。透過攻破iBoot,攻擊者可以影響核心和用戶空間環境,從而實現高度自訂並繞過蘋果生態系統的限制。這些漏洞可以透過軟體更新進行修復,因此雖然不如啟動ROM漏洞那麼持久,但仍是一種有效的越獄手段。
核心時代:補丁和保護
內核漏洞利用的出現標誌著越獄策略的重大演進。內核級漏洞可被諸如…之類的工具利用。 盤古, Taig和 鴨綠江這使得使用者能夠在不改變啟動過程的情況下執行未簽署程式碼並進行深度系統修改。這段時期鞏固了一種更為精細的越獄方法,專注於在蘋果安全架構內實現操作靈活性。諸如此類的越獄工具包括… 伊萊克特拉 Unc0ver 該策略進一步得到了體現,它繞過了蘋果的防禦措施來修改系統,同時表面上保持了對 iOS 安全協議的遵守。
現代越獄:精準且針對特定流程的攻擊
2015 年是越獄歷史上的轉捩點。蘋果公司有效地加強了對 bootROM 和 iBoot 的防禦,不再滿足於僅僅通過定期發布補丁來應對內核中的各種漏洞,而是通過一系列創新對越獄社區發起了反擊,這些創新基本上讓越獄社區以及 Cellebrite 和 NSO 等公司疲於應對。
在 iOS 9(2015 年 9 月)中,蘋果引入了核心修補程式保護 (KPP),這是其最重要的安全性更新。 KPP 指的是核心中實作的一段程式碼,用於保護核心快取中的讀取執行記憶體和唯讀記憶體。它透過定期進行隨機檢查來實現這一目標。
自 2015 年 9 月以來,越獄技術分為 KPPLess 和 KPP Bypass 兩大類。 KPPLess 技術是指在 KPP 機制仍在運作的情況下繞過 KPP 檢查。 KPP Bypass 則完全停用 KPP。在 KPP 出現之前,攻擊者通常需要擁有核心寫入權限才能修改安全碼。
在最初於 2016 年 6 月隨 iOS 10 一起發布的 A10 晶片中,蘋果引入了 KTRR(內核文字唯讀區域),以防止在運行時修改 iOS 核心。舊晶片嘗試透過在 EL3 中載入監控程式來實現這一點,但這種方法本身有缺陷,越獄社群早已找到了繞過監控程式的方法。從 A10 晶片開始,蘋果實際上將安全檢查功能整合到了硬體本身,這使得越獄者(包括社區成員和商業越獄者)的工作變得更加困難。
2018 年 6 月,隨著 iOS 12 的發布,蘋果引入了指標認證碼 (PAC),這是其指標認證技術的實現方式。 PAC 利用指標的高位儲存加密簽名,透過驗證指標值及其上下文資訊來增強安全性。蘋果還引入了特殊的指令,用於向指標添加認證碼、驗證已認證指標的 PAC 值以及恢復指標的原始值。這使得系統能夠對某些指標是否被攻擊者篡改做出加密強度極高的保證,從而有望大幅提升應用程式的安全性。
同年稍後(2018 年 9 月),蘋果發布了 A12 晶片,並引入了頁面保護層 (PPL)。 PPL 的目標是防止攻擊者即使獲得了核心的讀取/寫入/執行權限,也無法修改進程的可執行程式碼或頁表。這是另一種漏洞利用緩解措施,可以增加攻擊鏈的難度。它利用 APRR 來創建一個「核心中的核心」來保護頁表。核心修改頁表的唯一方法是透過呼叫「PPL 例程」進入 PPL,這類似於從 XNU 呼叫 PPL 的系統呼叫。這使得可以修改頁表的核心程式碼入口點僅限於這些 PPL 例程。我們能否總結一下 A12 的這項變化對越獄社區為何如此重要?
在蘋果發布 iOS 15 之前,越獄社群經歷了一段相對平靜的時期。 iOS 15 引入了密封系統磁碟區 (SSV) 機制,這給越獄社群帶來了巨大衝擊。 SSV 是一種核心級安全特性,它使用只有蘋果知道的加密簽名對磁碟區進行密封,從而阻止任何試圖修改系統內容的程式碼,進而防止在 iOS 啟動前進行任何未經授權的更改。這個機制迫使越獄社群徹底改變了以往的越獄架構。自此,越獄被分為無 root 和有 root 兩種類型。
無根越獄會將所有檔案和修改都保存在根目錄之外,通常位於… / VAR /private/prebootRootful 越獄使用綁定掛載,這實際上會創建一個「偽」root權限,使其行為類似於真正的root權限。 根文件系統但需要利用 bootROM 漏洞。
由於此次越獄並未修改內核程式碼,因此其影響不再是系統級的,而是針對每個進程。這意味著,越獄不再是針對整個作業系統,而是針對每個行程。
我們可以這樣理解——在「前現代」越獄時代,只需修補核心即可,這會導致整個系統受到影響。而現在,許多越獄(奇美拉, checkra1n(這些程式並非直接修改核心程式碼,而是篡改核心資料結構,並且篡改是逐個進程進行的。這種情況使得越獄檢測變得複雜。雖然系統的大部分完整性似乎完好無損,但係統仍然會執行邏輯來判斷進程是否已被越獄。這意味著,除非有意為之,否則進程將保持越獄狀態。
這種新的越獄方法技術上非常複雜,這還算是客氣的說法。它需要一些額外的介面。 啟動 所有進程的呼叫、execve鉤子以及所有新進程的插入都會在進程建立後立即觸發越獄。不幸的是(從越獄社區的角度來看),所有這些技術上的創新最終導致「自由」的減少。
對 Application Security 工程師和 DevSecOps 管理人員
那麼,這一切對您——應用安全工程師——意味著什麼?我們為您提供的最佳防禦機制之一是“運行時應用程式自我保護(Runtime Application Self Protection,簡稱 RASP)RASP 讓我們的客戶可以對他們的應用程式進行編程,使其在安全防護措施被觸發時自動做出反應。一些客戶長期以來一直使用 RASP 在越獄觸發時採取相應措施。
但如果說蘋果與越獄社群之間曠日持久的貓鼠遊戲教會了我們什麼,那就是並非所有越獄都一樣。有些越獄需要「連結」電腦,對好奇的使用者或除最執著的駭客和學者之外的任何人來說,幾乎沒有任何實際價值。越獄類型多種多樣,例如「半越獄」、「無root」和「有root」。有些越獄由於其功能有限,與其說是可用的“產品”,不如說是黑客實驗,因此可以說不配被稱為“越獄”。雖然蘋果持續打擊越獄的努力迫使越獄社群不斷創新,但也隨著時間的推移,現代越獄的效力有所下降。換句話說,蘋果不遺餘力地將越獄社群逼入絕境,使得「越獄」一詞聽起來似乎過於誇張,難以形容這些駭客手段所帶來的優勢,即便實現這些小壯舉所需的技術能力也在不斷提高。
因此,我們建議為客戶開發應用程式的公司在應對越獄跡象時,應採取更為精細的措施,而非粗暴的應對。例如,僅僅記錄越獄事件的發生可能就足夠了,或許不再需要專門針對越獄事件編寫應對程序。如果您確實需要編寫應對程序,那麼在製定運行時應用程式自我保護 (RASP) 策略時,請考慮除了越獄之外,還有哪些其他防護措施會被觸發。越獄只是攻擊的促成因素。重要的是要偵測越獄促成的攻擊,而不能僅僅依賴越獄偵測來阻止攻擊者。
想了解更多相關信息,請點擊此處。 Digital.ai Application Security 可以保護您的 iOS 應用程式(透過偵測越獄等多種手段),請下載我們的 產品簡介.