Geschrieben von Amir Amitai und Daniel Shugrue

Wenn es um iPhones geht, verbindet der Begriff „Jailbreak“ (geprägt mit der ersten iOS-Version, bevor sie überhaupt den Namen „iOS“ erhielt) Technologie und das Konzept, sich von Einschränkungen zu befreien:

  1. Gefängnis: Bezieht sich ursprünglich auf ein metaphorisches Gefängnis oder eine Gefangenschaft. Im Zusammenhang mit iPhones stellt es die Einschränkungen und Beschränkungen dar, die Apple den Drittanbieter-Apps auferlegt, die auf ihrem iOS-Betriebssystem ausgeführt werden. Apple behält durch seine App Store-Richtlinien und Systemsicherheitsmaßnahmen eine strenge Kontrolle darüber, was Benutzer mit ihren Geräten tun können und was nicht. Zu diesen Einschränkungen gehören Einschränkungen bei der Installation von Apps aus anderen Quellen als dem App Store, bei der Anpassung des Erscheinungsbilds und der Funktionalität des Geräts sowie beim Zugriff auf das Innenleben des Betriebssystems.
  2. Unterbrechung: Bedeutet, der Gefangenschaft zu entkommen oder sich daraus zu befreien. Im Zusammenhang mit iPhone-Jailbreaking bedeutet es, die von Apples iOS festgelegten Einschränkungen zu umgehen oder zu umgehen. Bei diesem Prozess werden Schwachstellen im iOS-System ausgenutzt, um Root-Zugriff oder Administratorrechte zu erlangen, sodass Benutzer das Gerät auf eine Weise modifizieren können, die Apple normalerweise nicht zulässt.

Durch das Jailbreaking eines iPhone erhält der Endbenutzer vollen Ausführungs- und Schreibzugriff. Alles in allem bedeutet „Jailbreak“ im Zusammenhang mit iPhones im Wesentlichen, dass man sich von den Einschränkungen und Beschränkungen befreit, die Apples iOS auferlegt, sodass Benutzer mehr Kontrolle über ihre Geräte erlangen und sie nach ihren Wünschen anpassen können. Der Begriff spiegelt die Idee wider, Ihr iPhone aus dem metaphorischen „Gefängnis“ der Apple-Beschränkungen zu befreien und Ihnen mehr Freiheit und Flexibilität bei der Nutzung Ihres Geräts zu geben.

Der Wunsch, sein Telefon zu befreien, hat eine Jailbreak-Community hervorgebracht, die aus Hackern, neugierigen Benutzern und Bedrohungsakteure. Wie bei jeder Community mit Selbstachtung, eine Reddit-Gruppe (r/jailbreak) hat sich gebildet, YouTube-Kanäle wurden erstellt (und gelöscht) und das Dark/Gray Web unterstützt den Austausch von Jailbreaking-Tipps, -Techniken und -Verfahren unter Community-Mitgliedern. Jailbreaks sind seit langem gefragt, und diejenigen, die Jailbreaks entdecken, ausführen und teilen, erlangen in der Jailbreak-Community Ruhm oder Berühmtheit.

Beachten Sie, dass Jailbreaking zum Erlöschen von Garantien führen kann und rechtliche Konsequenzen haben kann. Apple unterstützt oder fördert dies daher nicht offiziell. Beachten Sie außerdem, dass ein „Ausbrechen“ aus den Apple-Richtlinien zwar zum Erlöschen der Apple-Garantie führt, dies jedoch an und für sich nicht illegal ist und viele in der Jailbreaking-Community es als ihr Recht oder sogar als Pflicht betrachten, an Jailbreaks teilzunehmen, und zwar nicht unbedingt wegen böswilliger Absichten Zwecke. Während sich die Community aus Hackern, Bedrohungsakteuren und lustigen Witzbolden lose zu einer Basis-Jailbreak-Community zusammengeschlossen hat, deren Ziel es ist, die Bemühungen von Apple, ihr Betriebssystem zu sperren, zu vereiteln, hat sich auch eine gewinnorientierte Branche etabliert, die iOS knackt. Unternehmen wie NSO, Cellebrite und Paragon bieten gegen eine Gebühr ausgefeilte Jailbreak-Techniken an; und Strafverfolgungsbehörden sowie Regierungen auf der ganzen Welt – obwohl sie es ungern öffentlich zugeben – fast sicher nehmen diese Dienste in Anspruch.

In der Welt der application securityJailbreaks sind überaus wichtig, denn wenn ein Bedrohungsakteur eine Anwendung manipulieren (modifizieren) möchte, muss er als Erstes ein Telefon jailbreaken, damit er sicherstellen kann, dass die modifizierte Anwendung ausgeführt werden kann. Mit anderen Worten: Obwohl das Jailbreaken eines Telefons weder illegal noch unethisch ist, ist es in den meisten Fällen ein notwendiger Schritt, um eine manipulierte App tatsächlich verwenden zu können. Daher ist das Erkennen von Jailbreak-Telefonen ein wesentlicher Bestandteil jeder Anwendungshärten Lösung.

Gleichzeitig hat Apple konsequent Zeit, Geld, Mühe und Einfallsreichtum investiert, um Jailbreaks gänzlich zu verhindern. Im Laufe der Zeit sind Jailbreaks immer komplizierter geworden und erfordern aufgrund der Sicherheitsverbesserungen von Apple oft mehrere Exploits, um das Gerät vollständig zu jailbreaken. Die Entwicklung der Bemühungen von Apple, Jailbreaks zu verhindern, ist lang und geschichtsträchtig – im Wesentlichen ein Katz-und-Maus-Spiel, das Innovationen in der Jailbreak-„Community“ und bei Apple selbst vorangetrieben hat.

Während die Jailbreak-Erkennung ein wesentlicher Bestandteil der Gewährleistung der Sicherheit öffentlich verfügbarer Anwendungen ist, sind nicht alle Jailbreaks gleich; Einige Jailbreaks stellen nicht einmal eine große Sicherheitsbedrohung dar.

In diesem Beitrag wird 1) die Entwicklung der iPhone-Jailbreaks beschrieben und 2) näher erläutert, welche Arten von Jailbreaks im ursprünglichen Sinne des Wortes vollen Zugriff auf Systemressourcen ermöglichen und welche weniger leistungsstarke Cousins ​​des traditionellen Jailbreaks sind.

Die gemeinsame Entwicklung von iOS und Jailbreaks

Jailbreakers

Abbildung 1: Eine Gruppe fröhlicher Jailbreaker auf der DEF CON (August 2011). Bildnachweis: Dreamyshade – Eigene Arbeit, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=38871495

Die Anfänge: BootROM-Exploits

Zu Beginn konzentrierte sich das Jailbreaking hauptsächlich auf das BootROM, eine grundlegende Komponente des Bootvorgangs des iOS-Geräts. Das BootROM ist eine Low-Level-Software, die dauerhaft in die Hardware eingraviert ist und Exploits auf dieser Ebene besonders leistungsstark macht. Angriffe auf das BootROM wirken sich auf die gesamte Vertrauenskette aus: den Bootloader, den Kernel und schließlich die Userland-Umgebung. Ein erfolgreicher BootROM-Exploit könnte beispiellosen Zugriff auf das Gerät gewähren und dauerhafte Änderungen ermöglichen, die Software-Updates und -Resets überdauern könnten. Diese Ära war geprägt von berühmten Heldentaten wie limera1n und Pwnagetool, das iPhones massenhaft freischaltete und benutzerdefinierte Firmware-Installationen und tiefgreifende Systemmodifikationen ermöglichte.

Der Wechsel zu iBoot: Bootloader-Schwachstellen

Als Apple das BootROM verstärkte, richteten die Angreifer ihr Augenmerk auf iBoot, die nächste Stufe im iOS-Bootvorgang. Exploits im Bootloader wie redsn0w und Sn0wbreeze waren zwar weniger dauerhaft als BootROM-Schwachstellen, boten aber dennoch umfassende Kontrolle über das Gerät. Durch die Kompromittierung von iBoot könnten Angreifer Einfluss auf die Kernel- und Userland-Umgebung nehmen und so erhebliche Anpassungen ermöglichen und die Einschränkungen des Apple-Ökosystems umgehen. Diese Schwachstellen konnten über Software-Updates behoben werden, was sie zu einem weniger haltbaren, aber dennoch wirksamen Mittel zum Jailbreaking machte.

Die Kernel-Ära: Patching und Schutz

Die Entwicklung hin zu Kernel-Exploits markierte eine bedeutende Weiterentwicklung der Jailbreaking-Taktiken. Schwachstellen auf Kernel-Ebene, die von Tools wie ausgenutzt werden Pangu, Taig und Yalu, ermöglicht die Ausführung von unsigniertem Code und tiefgreifenden Systemänderungen, ohne den Startvorgang zu ändern. Diese Ära konsolidierte einen verfeinerten Ansatz für das Jailbreaking und konzentrierte sich auf die betriebliche Flexibilität innerhalb der Sicherheitsarchitektur von Apple. Jailbreaks wie Electra und Unc0ver hat diese Strategie noch weiter verdeutlicht, indem es durch Apples Abwehrmechanismen navigierte, um das System zu modifizieren und gleichzeitig den Anschein zu erwecken, dass die Sicherheitsprotokolle von iOS eingehalten würden.

Moderne Jailbreaks: Präzisions- und prozessspezifische Exploits

2015 war ein Wendepunkt in der Geschichte der Jailbreaks. Nachdem Apple die Abwehrmaßnahmen sowohl des BootROM als auch des iBoot effektiv gestärkt hatte, war es nicht mehr bereit, einfach mit regelmäßigen Patches auf verschiedene Exploits in seinem Kernel zu reagieren, und ging mit einer Reihe von Innovationen in die Offensive gegen die Jailbreak-Community, die den Jailbreak im Wesentlichen aufrechterhielten Community – sowie Unternehmen wie Cellebrite und NSO – auf ihren Fersen.

Mit iOS 9 (September 2015) führte Apple Kernel Patch Protection (KPP) ein, sein wichtigstes Sicherheitsupdate. KPP bezieht sich auf Code, der im Kernel implementiert ist, um den Lese-/Ausführungsspeicher und den Nur-Lese-Speicher im Kernelcache zu schützen. Dies geschieht durch regelmäßige Stichprobenkontrollen.

Seit September 2015 sind die Jailbreaks in KPPLess und KPP Bypass unterteilt. KPPLess ist eine Technik, bei der KPP noch läuft – das bedeutet, dass die KPP-Prüfung umgangen wird. KPP Bypass deaktiviert KPP vollständig. Vor KPP benötigte ein Angreifer hauptsächlich Kernel-Schreibfähigkeiten, um den Sicherheitscode zu patchen.

In A10-Chips, die ursprünglich im Juni 10 mit iOS 2016 ausgeliefert wurden, führte Apple KTRR (Kernel Text Read only Region) ein, das Änderungen am iOS-Kernel zur Laufzeit verhindert. Ältere Chips versuchten, dies über ein in EL3 geladenes Überwachungsprogramm zu tun, aber die Methode war von Natur aus fehlerhaft und die Jailbreak-Community hatte schon lange Möglichkeiten gefunden, das Überwachungsprogramm zu umgehen. Beginnend mit den A10-Chips hat Apple Sicherheitskontrollen effektiv in die Hardware selbst verlagert und so das Leben der Jailbreaker (sowohl in der Community als auch im gewinnorientierten Sektor) schwieriger gemacht.

Im Juni 2018 mit der release Mit iOS 12 führte Apple PAC (Pointer Authentication Code) ein, seine Implementierung der Pointer Authentication. PAC nutzt die oberen Bits eines Zeigers zum Speichern einer kryptografischen Signatur und erhöht so im Wesentlichen die Sicherheit durch die Überprüfung von Zeigerwerten und zusätzlichem Kontext. Es wurden spezielle Anweisungen eingeführt, um einem Zeiger einen Authentifizierungscode hinzuzufügen, den PAC eines authentifizierten Zeigers zu überprüfen und den ursprünglichen Zeigerwert wiederherzustellen. Dies gibt dem System die Möglichkeit, kryptografisch starke Garantien für die Wahrscheinlichkeit zu geben, dass bestimmte Zeiger von Angreifern manipuliert wurden, was die Möglichkeit einer erheblichen Verbesserung bietet application security.

Als die A12-Chips später in diesem Jahr (September 2018) auf den Markt kamen, führte Apple den Page Protection Layer (PPL) ein. Das Ziel von PPL besteht darin, zu verhindern, dass Bedrohungsakteure den ausführbaren Code eines Prozesses oder seine Seitentabellen ändern, selbst nachdem sie Lese-/Schreib-/Ausführungsrechte für den Kernel erhalten haben. Dies ist eine weitere Exploit-Abschwächung, die die Verkettung von Angriffen erschweren kann. Dies geschieht durch die Nutzung von APRR, um einen „Kernel im Kernel“ zu erstellen, der Seitentabellen schützt. Die einzige Möglichkeit für den Kernel, Seitentabellen zu ändern, besteht darin, PPL durch Aufrufen einer „PPL-Routine“ aufzurufen, was einem Systemaufruf von XNU in PPL entspricht. Dies begrenzt die Einstiegspunkte in den Kernel-Code, die Seitentabellen ändern können, auf nur diese PPL-Routinen. Können wir zusammenfassen, warum diese A12-Änderung für die Jailbreak-Community von Bedeutung war?

Bis Juni 2021, als Apple iOS15 vorstellte, erlebte die Jailbreak-Community eine Phase relativer Ruhe. iOS15 sorgte mit der Einführung von SSV, dem Sealed System Volume, für Aufregung in der Jailbreak-Community. Bei diesem Mechanismus handelt es sich um eine Sicherheitsfunktion auf Kernel-Ebene, die das Volume mit einer kryptografischen Signatur versiegelt, die nur Apple kennt. Sie weist jeden Code zurück, der versucht, den Systeminhalt zu ändern, und verhindert so alle unbefugten Änderungen, die vor dem Start von iOS vorgenommen werden. Diese Methode zwang die Jailbreak-Community dazu, die gesamte Struktur früherer Jailbreak-Architekturen zu ändern. Seitdem werden die Jailbreaks in Rootless und Rootful unterteilt.

Bei Rootless-Jailbreaks bleiben alle Dateien und Änderungen außerhalb von Root, normalerweise im Root-Zugriff / var und /private/preboot. Rootful-Jailbreaks verwenden Bind-Mounts, die effektiv einen „falschen“ Root erstellen, der sich dann wie der echte verhält rootfs, erfordert aber einen BootROM-Exploit.

Da der Jailbreak ohne Patchen des Kernel-Codes erreicht wurde, wirken sich die Auswirkungen nun nicht mehr systemweit aus, sondern eher pro Prozess. Das bedeutet, dass statt des Jailbreakings des Betriebssystems nun ein Jailbreaking pro Prozess durchgeführt wird.

Wir können es so betrachten: Im Zeitalter der „vormodernen“ Jailbreaks reichte es aus, den Kernel zu patchen, was zur Beeinträchtigung des gesamten Systems führte. Nun, wo viele Jailbreaks (Chimäre, checkra1n) manipulieren Kernel-Datenstrukturen, anstatt den Kernel-Code direkt zu patchen, die Manipulation erfolgt pro Prozess. Dieser Zustand erschwert die Erkennung des Jailbreaks. Während die Integrität des Systems größtenteils intakt zu sein scheint, ist eine Logik implementiert, um festzustellen, ob ein Prozess einen Jailbreak aufweist oder nicht. Das bedeutet, dass der Prozess, sofern nicht beabsichtigt, im Gefängnis bleibt. Dies bedeutet wiederum, dass selbst wenn diese Art von Jailbreak Zugriff auf Ressourcen gewährt, auf die Apple der App keinen Zugriff gewähren soll, dieser nicht Zugriff auf alle Prozesse gewährt, was wichtig ist, da dies bedeutet, dass der Jailbreak selbst dies ist nicht unbedingt gefährlich für alle (oder sogar einige) Apps auf dem Telefon.

Diese neue Art des Jailbreaking ist, gelinde gesagt, technisch kompliziert. Es erfordert Haken launchd wo alle Prozesse aufgerufen werden, Execve-Hooks und Einfügen aller neuen Prozess-Jailbreaks unmittelbar nach der Prozesserstellung. Und leider (aus Sicht der Jailbreaking-Community) führt all diese technische Kreativität zu weniger „Freiheiten“.

Implikationen für Application Security Ingenieure und DevSecOps Manager

Was bedeutet das alles für Sie? application security Ingenieur? Einer der besten Abwehrmechanismen, die wir Ihnen anbieten, ist „Runtime Application Self Protection“, oder RASP. RASP ermöglicht es unseren Kunden, ihre Apps so zu programmieren, dass sie automatisch reagieren, wenn Schutzmaßnahmen und Schutzmechanismen ausgelöst werden. Einige Kunden nutzen RASP schon seit langem, um Maßnahmen zu ergreifen, wenn Jailbreaks ausgelöst werden.

Aber wenn uns die lange Geschichte des anhaltenden Katz-und-Maus-Spiels zwischen Apple und der Jailbreak-Community etwas gelehrt hat, dann ist es, dass nicht alle Jailbreaks gleich sind. Einige erfordern eine „Anbindung“ an einen Computer und bieten neugierigen Benutzern oder anderen Personen, die über die entschlossensten Bedrohungsakteure und Akademiker hinausgehen, nur einen geringen funktionalen Wert. Es gibt verschiedene Typen, z. B. „semi-tethered“, „rootless“ und „rootful“. Einige verdienen den Spitznamen „Jailbreak“ wohl nicht, da sie nur einen begrenzten Umfang haben und eher an Hacker-Experimente als an ein funktionierendes „Produkt“ erinnern. Während Apples anhaltende Bemühungen, Jailbreaks abzuwehren, zu Innovationen in der Jailbreak-Community geführt haben, haben sie im Laufe der Zeit auch dazu geführt, dass moderne Jailbreaks weniger leistungsfähig sind. Mit anderen Worten: Apples unermüdliches Bestreben, die Jailbreaking-Community in die Enge zu treiben, hat dazu geführt, dass der Begriff „Jailbreak“ fast zu hochtrabend erscheint, als dass er sich auf die Vorteile beziehen könnte, die diese Hacks mit sich bringen, obwohl es für die Durchführung dieser kleinen Fähigkeiten erforderliche technische Scharfsinnigkeit gibt gewachsen.

Aus diesem Grund empfehlen wir Unternehmen, die Anwendungen für ihre Kunden erstellen, ein Skalpell statt eines Hammers anzuwenden, um auf Anzeichen von Jailbreaking zu reagieren. Beispielsweise kann es ausreichen, nur aufzuzeichnen, dass ein Jailbreak stattgefunden hat, und es ist möglicherweise nicht mehr notwendig, eine Reaktion ausschließlich auf einen Jailbreak zu programmieren. Wenn Sie es für notwendig erachten, eine Reaktion zu programmieren, berücksichtigen Sie bei der Entwicklung Ihrer Runtime Application Self Protection (RASP)-Strategie, welche anderen Wachen in Kombination mit dem Jailbreak ausgelöst werden. Der Jailbreak ist ein Enabler. Es ist wichtig, die durch den Jailbreak aktivierten Angriffe zu erkennen und sich nicht nur auf die Jailbreak-Erkennung zu verlassen, um Angreifer zu stoppen.

 

Um mehr darüber zu lesen, wie Digital.ai Application Security Wenn Sie Ihre iOS-Apps schützen können (durch die Erkennung von Jailbreaks und vielen anderen Tricks), laden Sie unsere herunter Produktbeschreibung.

Sind Sie bereit, Ihr Unternehmen zu skalieren?

Entdecken

Was gibt es Neues in der Welt von Digital.ai

23. Juli 2024

Verschleierung des Codes einer Android-App

Erfahren Sie, wie wichtig Code-Verschleierung unter Android ist. Entdecken Sie die Vorteile, Tools und Best Practices zum Schutz Ihres geistigen Eigentums und zur Verbesserung der Sicherheit.

Mehr erfahren
22. Juli 2024

Zusammenfassung des CrowdStrike-Vorfalls und der Prävention mit Digital.ai Lösungen

Am 19. Juli 2024 wurde ein fehlerhaftes Softwarekonfigurationsupdate von…

Mehr erfahren
19. Juli 2024

Anleitung: So verschleiern Sie Code

In diesem umfassenden Handbuch erfahren Sie, wie Sie Code effektiv verschleiern. Entdecken Sie die Bedeutung der Code-Verschleierung und erkunden Sie verschiedene Arten und Techniken.

Mehr erfahren