Input Processing Flashcards
Erkennung falscher Eingaben anhand von ..
- Vergleichen mit Richtlinien
- Verifizierung von Eigenschaften der Eingabe
- Formaten
- Checksummen
- Signaturen
- Zugriffs Log-Dateien
Reaktion, wenn unauthorisierte Modifikation an Input erkannt werden ..
- Zurückweisen
- Blocken
- Zugriffsbeschränkung
- Alarmierung
- Benachrichtigungen
- Logging
- Herunterfahren
Beispiele
C Strings / Buffer Overflow
Gründe
- C hat keinen nativen String Typ sondern nur Char Arrays
- NUL (0x00) markiert das Ende eines Strings
- Manuelles Buffer Management
- Statische größen können zu klein sein
- Dynamische größen können zu inperformant sein
Beispiele
C Strings / Buffer Overlow
Probleme
- Nicht-terminierter Strings
- Überschreiben von Speicherbereichen die nicht zum String gehören
- Wer verantwortet Buffer Management?
Beispiele
Meta Characters
- Meta Characters sind Zeichen zur Formatierung
- Können Teil von Dateinamen, E-Mail-Adressen, SQL Statements sein
- Validierung von ankommenden Input speziell auf den Einsatzzweck angepasst.
Beispiele
Zeichensätze
- Zeichen werden durch unterschiedlich viele Bytes dargestellt
- Muss Input erst decodiert/ transfomiert werden
- Ist die visuelle Darstellung missverständlich?
Web Security
Command Injection
Erklärung
- Software nutzt externe Eingaben um Kommando umzusetzen
- Eingaben können spezielle Elemente enthalten, die neutralisiert werden müssen
Web Security
Command Injection
Anzeichen für Schwachstellen
a) Eingaben kommen aus nicht vertrauenswürdiger Quelle
b) Eingaben sind Teil eines Strings, der als Kommando aufgerufen wird
c) Benutzer erhält Rechte durch Ausführung eines Kommandos
Web Security
Command Injection
Lösungsansätze
- Vermeide externe Kommando Aufrufe
- Whitelisting der erlaubten Befehle
- Nutze Rechte, die verhindern auf andere Inhalte zuzugreifen
Web Security
Cross-site-scripting
Allgemein
Die Web-App neutralisiert Eingaben nicht bevor diese im Output platziert werden und diese an einen anderen Nutzer ausgeliefert werden.
Web Security
Cross-site-scripting
Ablauf
- Nicht vertrauenswürdige Eingaben werden an die Web App übermittelt
- App generiert Web Page mit nicht vertrauenswürdigen Daten
- Die App verhindert bei der Erzeugung der Seite nicht, das der Content vom Browser ausgeführt wird
- Das Opfer besucht die Seite
- Die Skripte werden im Kontext der Seite ausgeführt und werden nicht durch die same-origin-policy behindert.
Web Security
Cross-Site-Scripting
Welche Arten werden unterschieden?
- DOM-based XSS
- Reflected CSS (non persistent)
- Stored XSS
Web Security
Cross Site Scripting
DOM-Based XSS
- Ein vertrauenswürdiges Skript, dsa vom SErver kommt nimmt Benutzereingaben und bettet dieses in die SEite ein.
- Einbettung erfolg auf Client-Seite
Web Security
Cross Site Scripting
Reflected XSS
(non persistent)
- Der Server nimmt Benutzereingaben entgegen, baut diese in die SEite ein und liefert die Seite zurück
- Enthält die EIngabe JS-Code, führt der Browser diese aus
- Einbettung erfolgt auf Server
Web Security
Cross Site Scripting
Stored XSS
(persistent XSS)
- Gefährliche Eingaben werden auf den Server gespeichert (z.B. in Datenbanken, Log-Files)
- Eingaben werden beim Aufruf der Seite immer wieder eingebunden
- Einbettung auf Server
Web Security
Cross Site Scripting
Lösungsansätze
- Escapen von HTML vor dem Einfügen in HTML Elemente
- Escapen von Attributen vor dem Einfügen in HTML Elemente
- Escapen von JS vor dem Einfügen in JS Data Values
- Escapen von CSS vor dem Einfügen in HTML Style Property Values
- Escapen von URl vor dem Einfügen in HTML URL Parameter
- Vermeide inline JS mit Content Security Policy
- Nutze security-fokussierte Endoding Bibliotheken
SQL Injection
Allgemein
- Keine (vollständige) Neutralisierung von speziellen Elementen, die in SQL-Kommandos genutzt werden.
- Eingabe wird direkt an DB weitergeschickt
- MS SQL kann sogar Shell Kommandos ausführen
SQL Injection
Ablauf
- Versuche mögliche Schwachstellen zu finden
- Sammle Infos über DB-Schema
- Finde SQL Version heraus
- Führe Angriff durch
SQL Injection
Lösungsansätze
- Eingaben Validierung (Whitelisting)
- Keine SQL-Fehlermeldung ausgeben (erleichtert die Suche)
- Prepared Statements benutzen
- Nutzer Privilegien beschränken und Nutzer separieren
- Error Reporting nur für interne Nutzer