Entwicklung Sicherer Apps (Teil 2) Flashcards
Was kann die Folge sein, wenn Kommunikationspartner nicht authentifiziert und Zertifikate nicht ausreichend überprüft werden?
(Insecure Communication)
Daten können abgefangen werden
Angreifer kann sich zwischenschalten
Identitäten werden missbraucht
Was sind Schutzmaßnahmen für Insecure Communication
SSL/TLS verwenden
Bei der Verwendung von Services von Drittanbietern (z.B. Social Network) immer auf deren verschlüsselte Version (z.B. über https) zurückgreifen
Sorgfältige auswahl von vertrauenswürdigen CAS
Zertifikate immer sorgfältig prüfen
Keinen sensiblen Daten über SMS, MMS, Notifications etc.
Sehr sensible Daten eventuell noch zusätzlich verschlüsseln vor Versenden über SSL/TLS
Certificate Pinning nutzen
Beispiel iOS: eigene Zertifikate in App Bundle einschließen und an Trust Object binden.
HSTS nutzen
Nenne Aspekte der Online Authentifikation
Nicht auf Offline-Authentifikation verlassen, kann auf Gerät mit Jailbreak evtl. umgangen werden
Authentifikation auf Client als gebrochen ansehen und durch Maßnahmen auf dem Server das System härten
Falls lokale Authentifikation verwendet wird (Offline-Authentifikation) sollte Code sein Integrität überprüfen um unautorisierte Änderungen zu erkennen
Was sind Schutzmaßnahmen für Lokale Verschlüsselung aus Credential?
Falls auf Client-Seite vertrauliche Daten gehalten werden diese durch App verschlüsseln
Schlüssel durch Key Derivation Function aus User Credential ableiten (z.B. Passwort)
Schlüssel nicht speichern
Dadurch wird Passwort für Datenzugriff benötigt, unabhängig von eventueller Verschlüsselung, die Smartphone automatisch realisiert
Jedoch: schlechtes UXD
Nenne Gründe für eine Insufficient Cryptography
Verwendung von ungeeigneten kryptographischen Verfahren (=gebrochene oder schwache Verfahren)
Falsche Verwendung von kryptographischen Verfahren
Fehlerhaftes Schlüsselmanagement:
Schlüssel für Angreifer lesbar
Schlüssel hardcoded im Binary
Schlüssel aus Dokumentation übernommen Der gleiche Schlüssel für alle Apps
Verwendung selbst ausgedachter/implementierter/kopierter kryptographischer Funktionen
Was sind Schutzmaßnahmen für insufficient Cryptography?
Möglichst keine sensiblen Daten lokal speichern
Dann muss auch nichts geschützt werden
Empfehlungen BSI zum Thema kryptographische Algorithmen beachten (siehe Grundlagenteil)
Nenne Gründe für ein Risiko durch Insecure Authorization
Fehler in Autorisierung in App
Z.B. Insecure Direct Object References
Z.B. Hidden Endpoints
Z.B. Übergabe Rolle eines Benutzers durch App
(Auf Smartphone mit Jailbreak kann Angreifer Rolle manipulieren)
Was sind Schutzmaßnahmen für Insecure Authorization
Ermittlung von Rollen und Berechtigungen ausschließlich im Backend und nur basierend auf Informationen aus dem Backend
Gegenmaßnahmen zu Insecure Direct Object References (siehe Kapitel zu Web Anwendungen)
Was kann man unter unsicherem Umgang mit Eingaben und Ausgaben verstehen?
Schwachstellen, die es einem Angreifer erlauben, die Benutzerschnittstelle einer Anwendung zum eigenen Vorteil zu manipulieren
Oft bei webbasierten Benutzerschnittstellen der Fall, dort müssen Eingaben mehrfach interpretiert werden
Beispiel: SQL Injection: Einfügen von Datenbankbefehlen in eine Eingabe, obwohl sie dort nicht erwartet wird.
Was ist ein Buffer Overflow?
Ziel eines Angreifers: Ausführung eigenen Codes auf Opfer-System
Vorgehen beim Buffer Overflow: zu viele Daten werden in einen zu kleinen reservierten Speicherbereich geschrieben
Daten werden unplanmäßig überschrieben
Geschicktes Überschreiben ⇨ ungewollter Ausführung von Schadcode
Fehler kommt durch unsichere Methoden für Eingabe/Ausgabe zustande
Was ist eine Race Condition?
Wann treten diese auf?
Race Conditions = Wettlaufsituationen
Tritt auf, wenn verschiedene Prozesse/Threads eine gemeinsame Information nutzen und sich gegenseitig beeinflussen können
Operationen und Entscheidungen auf der Basis gemeinsam genutzter
Informationen müssen atomar ablaufen => kein Wettbewerb
Auftretend häufig:
Beim Zugriff auf Schnittstellen und Daten
Bei der Verwendung von Authentifizierungs- und Sitzungsverwaltungstechniken
was sind beim unsicheren Umgang mit Berechtigungen und Ressourcen die Expliziten und Impliziten Berechtigungen?
Explizite Berechtigungen: Code wird mit zu vielen Rechten ausgeführt
Implizite Berechtigungen: Sicherheit hängt davon ab, dass ein Benutzer eine gewisse Information nicht hat (z.B. Ort einer Konfigurationsdatei, Wissen über eine URL)
Was ist das Risiko durch Code Tampering?
Angreifer können Binary der App ändern und über anderen App Store anbieten (Android)
Beispiel: Werbe-Framework ändern
Angreifer kopiert eine App und hinterlegt eigenen Werbe-ID und stiehlt damit werbeeinnahmen
Was sind Schutzmaßnahmen für Code Temparing?
Angriff nicht unter iOS möglich, da dort zentraler App-Store
Jailbreak Detection
Z.B. Testen auf Vorhandensein eines Telnet-Zugangs, Jailbreak binaries,…
Überprüfung, ob Code vom Code zur Compile-Zeit abweicht
Applications Signing (Apps Signieren - prüfen wer signiert hat)
Was versteht man unter Reverse Engineering?
Reverse Engineering = Analyse der Software, um den Aufbau der App zu verstehen und Source Code wiederherzustellen