
Speichersichere iBoot-Implementierung
In iOS 14 und iPadOS 14 (oder neueren Versionen) wurde die Toolchain des C-Compilers, der zum Erstellen des Bootloaders iBoot verwendet wird, von Apple unter dem speziellen Aspekt der Sicherheit modifiziert. Mit der modifizierten Toolchain wird Code implementiert, der bewirkt, dass für C-Programme typische Risiken hinsichtlich der Arbeitsspeicher- und Typsicherheit vermieden werden. Das hilft beispielsweise, die Schwachstellen in folgenden Klassen zu vermeiden:
Pufferüberlaufe: Es wird sichergestellt, dass alle Zeiger über Begrenzungsinformationen verfügen, die beim Zugriff auf den Speicher überprüft werden.
Heap-Missbrauch: Heap-Daten werden von den zugehörigen Metadaten getrennt und Fehlerbedingungen wie beispielsweise doppelte Freigaben werden präzise erkannt.
„Type“-Verwechslung: Es wird sichergestellt, dass alle Zeiger Informationen zum Laufzeittyp umfassen, die bei „Pointer Cast“-Operationen überprüft werden.
„Type“-Verwechslung: Durch Separieren aller dynamischen Speicherzuordnungen nach statischem Typ werden Verwechslungen infolge der Fehlerbedingung „Nutzung nach Freigabe“ (use-after-free) vermieden.
Diese Technologie steht bei iPhone-Geräten mit Apple A13 Bionic-Chip (oder neuer) sowie bei iPad-Geräten mit A14 Bionic-Chip (oder neuer) zur Verfügung.