Sicherheit im Apple iOS Betriebssystem

Wie schafft es Apple sein mobiles Betriebssystem iOS so abzusichern, so dass es zu einem der sichersten der Welt gehört und wie funktioniert eigentlich ein moderner ‚Jailbreak“.

Schauen wir uns zunächst mal an, wie die iOS Bootchain aussieht.

Die iOS Boot-Chain / Was passiert beim bootvorgang

Apple Boot Chain
Die iOS Bootchain. Elemente mit Schloss Symbol können nur von Apple signiert werden.
  1. BootRom: Der Inhalt aus dem BootROM wird unmittelbar nach dem Einschalten geladen und ausgeführt. Während dieses Vorgangs wird das bekannte Apple Logo angezeigt. Das BootROM kann nicht überschrieben bzw. verändert werden.
    Wird hier eine Sicherheitslücke gefunden, ist diese besonders wertvoll, da sie von Apple nicht mehr geschlossen werden kann.
    Im Anschluss prüft das Programm, ob die Signatur vom LLB korrekt ist. Ist die Signatur korrekt, wird dieser anschließend ausgeführt. Schlägt die Signaturprüfung fehl, wird das System angehalten, kann aber über den DFU Modus wiederhergestellt werden.
  2. LLB (Low Level Bootloader) Bevor der LLB nach dem obligatorischen Signaturcheck an den iBoot übergibt, führt er einige Setup Aufgaben aus (vergleichbar mit dem UEFI beim PC). Eine ausnutzbare Sicherheitslücke führt hier wie bei einer BootROM Lücke dazu, dass man sprichwörtlich alles mit dem Gerät machen kann. So kann theoretisch sogar die ECID überschrieben werden. Da sich auch die Signaturprüfung aushebeln lässt, kann ein beliebiger Kernel geladen werden. Mehr Freiheit als hier gibt es nicht.
  3. iBoot (second stage bootloader) Ist auch als Recovery Mode bekannt. Startet im Normalbetrieb nach einer Signaturprüfung den Kernel. Auch hier ist eine Sicherheitslücke interessant, da ein unsignierter Kernel geladen werden kann. Im Prinzip ist dann jede iOS Version ‚jailbreak‘-bar
  4. Kernel: Nachdem der Kernel geladen ist, wird im Anschluss iOS gestartet. Hier erscheint dann die Aufforderung das Gerät zu entsperren und die bekannte Nutzeroberfläche erscheint.
    Alle bekannten Jailbreaks der letzten Jahre setzten hier an und patchen den Kernel so, dass es möglich ist unsignierten Code mit Kernel Rechten auszuführen.
  5. Sandbox: Alle Apps starten unter iOS in einer Sandbox. Durch diese Sandbox ist eine App vom restlichen System weitgehend isoliert. So können keine Daten aus dem übergeordneten System oder aus anderen Apps gelesen oder beschrieben werden. Auch Apps, die in der Sandbox ausgeführt werden, müssen mit einem gültigen Zertifikat signiert werden. Ein solches Zertifikat vergibt Apple aber auch an Entwickler.

Die ganze Boot-Kette ist durchgehend mit einem starken Signaturmechanismus abgesichert. Auch wenn Elemente am Anfang der Kette für eine Sicherheitslücke attraktiver sind, finden alle Jailbreaks der letzten Jahre nur Anwendung auf Kernel Ebene.

Der Grund dürfte schlicht daran liegen, dass der Kernel aufgrund seiner Komplexität einfach mehr Angriffsfläche bietet. Die Bootloader zu Beginn der Kette sind vom Funktionsumfang eher simpel und enthalten auch nur selten neue Funktionen die neue Angriffsvektoren ermöglichen.


 

Im Laufenden Betrieb ist das System durch folgende Sicherheitsmerkmale zusätzlich abgesichert, die im Folgenden näher betrachten werden sollen:

OS VersionSicherheitsmerkmale
iPhoneOS 1.xkein Schutz
iPhonOS 2.xSignaturprüfung
iOS 4.3ASLR
iOS 6KASLR
iOS 7TouchID
iOS 8TeamID
iOS 9KPP
Entwicklung der Sicherheitsmerkmale in Apples mobilen Betriebssystem

Signaturprüfung

Während die erste Version von Apples mobilem Betriebssystem noch keine speziellen Sicherheitsmerkmale enthalten hat, kommt bereits in der zweiten Version die Signaturprüfung hinzu. Diese Prüfung sorgt dafür, dass nur Anwendungen ausgeführt werden, die mit einem Zertifikat von Apple signiert wurden. Auch wenn es Apple zu diesem Zeitpunkt vermutlich eher darum ging, dass der AppStore für normale Anwender der einzige Weg ist, um neue Anwendungen zu beziehen.

ASLR

Die ASLR (Address Space Layout Randomization) ist mittlerweile eine Standardtechnik, um das Ausnutzen von Sicherheitslücken zu erschweren. Vereinfacht gesagt liegen Programmteile und Bibliotheken nicht an festen Adressen, sondern werden über die ASLR an beliebige Speicheradressen verteilt. Dadurch ist es für einen Angreifer deutlich komplexer Funktionen aufzurufen, da er vorab erst mal nicht weiß wo diese im Speicher liegen. Apple war hier Vorreiter und hat als erster Hersteller ASLR in einem mobilen Betriebssystem eingeführt.

KASLR

KASLR erweitert die ASLR auf Kernelebene. Das heißt auch hier werden Bestandteile und Bibliotheken des Kernels an beliebige Adressen verteilt. Im Gegensatz zu ASLR gilt KASLR als nicht so wirkungsvoll, da der Kernel seine Adressen zur Laufzeit nicht ändern kann und die Adressen bis zu einem Neustart fest sind. In der aktuellen iOS Implemtierung liegt der Kernel zufällig an einer von 256 möglichen virtuellen Startadressen. Die zufällige Startadresse wird beim Startvorgang gewählt.

TouchID

Mit der Touch ID hat Apple eine zusätzliche Authentifizierungsmöglichkeit zum Betriebssystem hinzugefügt. Hinter der TouchID verbirgt sich eine Fingerabdrucksensor, der in den Home Button integriert ist.

 

Kernel Patch Protection (KPP)

Die Kernel Patch Protection schützt den Kernel vor Manipulation. Diese neue Schutzfunktion wurde in iOS9 eingeführt und ist der derzeit wirkungsvollste Schutz gegen einen Jailbreak. Die KPP hat sich daher einen eigenen Artikel verdient.

 

Quellen:

[1] https://www.theiphonewiki.com/wiki/ASLR
[2] https://www.theiphonewiki.com/wiki/Kernel_ASLR
[3] https://forums.grsecurity.net/viewtopic.php?f=7&t=3367
[4] http://paper.ijcsns.org/07_book/201310/20131006.pdf
[5] http://blog.pangu.io/wp-content/uploads/2015/11/POC2015_RUXCON2015.pdf
[6] http://embeddedideation.com/2016/03/10/exploring-the-physical-address-space-on-ios/

Leave a Reply

Your email address will not be published.