Inhaltsverzeichnis | 5 |
Vorwort | 13 |
Kapitel 1 Angriffe in Theorie und Praxis | 19 |
1.1„Angriffe“ durch Forscher | 19 |
1.2Angriffe auf Schwachstellen... | 25 |
1.2.1... bei Pwn2Own... | 25 |
1.2.2... und Jailbreaking | 27 |
1.3Schadsoftware im Überblick | 29 |
1.4Bösartige Apps im App Store | 31 |
1.5Ein einziger wirklich schädlicher Angriff | 34 |
1.6Apple will keine Virenscanner | 37 |
1.7Fazit | 37 |
Kapitel 2 Sicheres Booten, Sandbox & Co. – Die Schutzmaßnahmen im Überblick | 39 |
2.1Die sichere Boot-Kette | 40 |
2.2Signatur der Apps | 43 |
2.3Schutzmaßnahmen zur Laufzeit | 44 |
2.4Apps in der Sandbox | 46 |
2.5Rund um die Kryptografie | 47 |
2.5.1Der gerätespezifische Schlüssel | 48 |
2.5.2Die weiteren Schlüssel | 50 |
2.5.3Das Löschen von Schlüsseln | 50 |
2.6Schutz der Dateien | 50 |
2.6.1Data Protection im Überblick | 51 |
2.6.2Die Schutzklassen | 52 |
2.6.3Was kann geschützt werden? | 55 |
2.7Schutz der Daten im Schlüsselbund | 55 |
2.8Keybags | 58 |
2.8.1System Keybag | 59 |
2.8.2Backup Keybag | 59 |
2.8.3Escrow Keybag | 60 |
2.8.4iCloud Backup Keybag | 61 |
2.8.5Bestandteile eines Keybags | 61 |
2.9Netzwerksicherheit | 62 |
2.9.1SSL und TLS | 62 |
2.9.2VPN | 63 |
2.9.3Wi-Fi | 64 |
2.9.4Bluetooth | 64 |
2.9.5Keine Firewall | 65 |
2.10Sperrcode und Zugriffsschutz | 66 |
2.10.1Anforderungen an den Sperrcode | 66 |
2.10.2Touch ID – Fingerabdruck statt Sperrcode | 68 |
2.10.3Erzwingen einer bestimmten Konfiguration | 70 |
2.10.4Konfiguration der Geräte | 71 |
2.10.5Einschränkungen der Gerätefeatures | 72 |
2.10.6Konfigurationsprofile als Angriffsvektor | 74 |
2.10.7Löschen aus der Ferne (Remote Wipe) | 75 |
Kapitel 3 Die Schutz-maßnahmen nutzen | 77 |
3.1Die sichere Boot-Kette | 77 |
3.2Signatur der Apps | 78 |
3.3Schutzmaßnahmen zur Laufzeit | 79 |
3.3.1Berechtigungen (Entitlements) | 79 |
3.3.2URL-Schemata | 84 |
3.3.3Das Erschweren von Pufferüberlauf-Exploits | 85 |
3.4Apps in der Sandbox | 85 |
3.5Rund um die Kryptografie | 86 |
3.6Schutz der Dateien | 87 |
3.7Schutz der Daten im Schlüsselbund | 90 |
3.7.1Die Daten im Schlüsselbund | 90 |
3.7.2Die Nutzung des Schlüsselbunds | 92 |
3.8Keybags | 102 |
3.9Netzwerksicherheit | 102 |
3.9.1SSL und TLS | 102 |
3.9.2VPN | 114 |
3.9.3Wi-Fi | 114 |
3.9.4Bluetooth | 115 |
3.10Sperrcode und Zugriffsschutz | 115 |
Kapitel 4 Der Wegweiser zur | 117 |
4.1iOS ist nicht so sicher, wie Apple uns glauben macht! | 117 |
4.2Sichere App-Entwicklung | 119 |
4.3Der Weg ist das Ziel | 119 |
4.4Schwachstellen im Überblick | 120 |
4.4.1Objective-C ist auch nur C | 120 |
4.4.2Unzureichend geprüfte Eingaben | 121 |
4.4.3Interprozesskommunikation | 122 |
4.4.4Unsichere Dateioperationen | 122 |
4.4.5Schwachstellen in der Zugriffskontrolle, Authentifizierung und Autorisierung | 123 |
4.4.6Fehler in der Kryptografie | 125 |
4.4.7Race Conditions | 125 |
4.4.8Social Engineering | 126 |
4.5Die OWASP Top 10 Mobile Risks | 127 |
4.5.1M1: „Insecure Data Storage“ | 127 |
4.5.2M2: „Weak Server Side Controls“ | 128 |
4.5.3M3: „Insufficient Transport Layer Protection!“ | 129 |
4.5.4M4: „Client Side Injection“, | 130 |
4.5.5M5: „Poor Authorization and Authentication“ | 131 |
4.5.6M6: „Improper Session Handling“ | 132 |
4.5.7M7: „Security Decisions via untrusted Inputs“ | 132 |
4.5.8M8: „Side Channel Data Leakage“ | 133 |
4.5.9M9: „Broken Cryptography“ | 133 |
4.5.10M10: „Sensitive Information Disclosure“ | 133 |
Kapitel 5 Ein sicherer Entwicklungszyklus | 135 |
5.1Der SDL im Überblick | 136 |
5.1.1Die Grundsätze des SDL | 136 |
5.1.2Die Phasen des SDL | 137 |
5.1.3Fazit | 143 |
5.2Bedrohungsmodelle – Application Threat Modeling | 143 |
5.2.1Bedrohungsmodelle im „Real Life“ | 143 |
5.2.2Viele Wege führen zum Ziel | 144 |
5.2.3Entwurfsgesteuerte Bedrohungsmodellierung | 145 |
5.2.4STRIDE | 146 |
5.2.5Ein einfaches Beispiel | 147 |
Kapitel 6 Pufferüberlauf- und Formatstring-Schwachstellen | 151 |
6.1Der Pufferüberlauf | 151 |
6.1.1Ein C-Programm und sein Speicher | 152 |
6.1.2Ein Pufferüberlauf auf dem Stack | 153 |
6.1.3Angriff über die Pufferüberlaufschwachstelle | 155 |
6.1.4Varianten des Pufferüberlaufs | 156 |
6.1.5Pufferüberläufe verhindern, allgemein | 157 |
6.1.6Schutzmaßnahmen erschweren Angriffe | 158 |
6.1.7Pufferüberläufe in iOS verhindern | 162 |
6.1.8Pufferüberläufe finden | 167 |
6.2Des Pufferüberlaufs kleiner Bruder: Der Pufferunterlauf | 168 |
6.2.1„Short Write“ und „Short Read“ | 169 |
6.2.2Pufferunterläufe verhindern | 170 |
6.3Formatstring-Schwachstellen | 172 |
6.3.1Angriff über eine Formatstring-Schwachstelle | 172 |
6.3.2Objective-C und die Formatstrings | 173 |
6.3.3Formatstring-Schwachstellen verhindern | 173 |
6.4Das Standardbeispiel im Licht von Kapitel 6 | 176 |
Kapitel 7 Eingaben überprüfen | 179 |
7.1Eingabefelder für Texte | 180 |
7.2Dateien aller Art | 181 |
7.3URLs | 183 |
7.4Das Standardbeispiel im Licht von Kapitel 7 | 187 |
7.4.1Eingabefelder für Texte | 188 |
7.4.2Dateien | 189 |
7.4.3URL | 189 |
Kapitel 8 Rund um die Kommunikation | 191 |
8.1Interprozess- und Netzwerkkommunikation | 191 |
8.1.1RPC (Remote Procedure Calls) | 191 |
8.1.2Signale | 192 |
8.2Netzwerkverbindungen | 193 |
8.2.1Authentifizierung des Benutzers | 193 |
8.2.2AirDrop | 199 |
8.2.3Gefährliche Umleitungen in Web | 200 |
8.3Das Standardbeispiel im Licht von Kapitel 8 | 204 |
Kapitel 9 Race Conditions und sichere Dateioperationen | 205 |
9.1Race Conditions | 205 |
9.1.1Das böse Multitasking | 205 |
9.1.2„Time of Check – Time of Use“–Schwachstellen | 207 |
9.1.3Race Conditions beim Signal-Handling | 211 |
9.2Sichere Dateioperationen | 211 |
9.2.1Result Codes sind zum Prüfen da! | 212 |
9.2.2Links können problematisch sein | 212 |
9.2.3Gefahren durch Case-insensitive Dateisysteme | 214 |
9.2.4Temporäre Dateien | 216 |
9.2.5Gefährlich: Dateien in öffentlich beschreibbaren Verzeichnissen | 217 |
9.3Das Standardbeispiel im Licht von Kapitel 9 | 218 |
9.3.1Race Conditions | 218 |
9.3.2Dateioperationen | 219 |
Kapitel 10 Kryptografie | 221 |
Kapitel 11 Sicherheit der Benutzeroberfläche | 225 |
11.1Das A und O: Sichere Default-Einstellungen | 225 |
11.2Keine gefährlichen Aktionen ohne explizite Zustimmung | 226 |
11.3Keine Übertragung sensitiver Daten ohne Zustimmung | 227 |
11.4Vor unwiderruflichen Aktionen wird gewarnt! | 227 |
11.5Vor Gefahren wird gewarnt! | 227 |
11.6Sicherheit hat Priorität | 228 |
11.7Entsprechen Sie den Erwartungen des Benutzers | 229 |
Anhang: Einführung in die Kryptografie | 231 |
A.1Symmetrische Systeme | 232 |
A.2Asymmetrische Systeme | 234 |
A.3Symmetrisch + Asymmetrisch = hybride Systeme | 235 |
A.4Authentikationssysteme | 236 |
A.5Ein Beispiel für ein hybrides Verfahren | 237 |
A.6Hash-Funktionen | 241 |
A.7Digitale Zertifikate | 242 |
A.8SSL/TLS | 243 |
A.9Kryptografie unter iOS | 245 |
Link- und Literatur- |
247 |
Stichwortverzeichnis | 268 |