Maßnahmen zur Risikominimierung festlegen und im Design umsetzen
Entwicklungsphase
Programmieren mit Berücksichtigung der Sicherheit
bekannte Fehler vermeiden
Anwendung testen
Qualitätssicherung
Testphase
spätestens hier Penetrationstest durchführen
ggf. Code Audits
Beheben der gefundenen Fehler
Vorproduktionsphase
Akzeptanz von Restrisiken
Aufbereiten des Quellcodes (Kommentare entfernen etc.)
ggf. Webserver-Hardening (WAF)
Produktionsphase
Monitoring
regelmäßige Überprüfung der Sicherheit durch Penetrationstests
Erweiterte Security-Analyse
Security-Analyse durch Reverse Code Engineering
Tool für Analyse kompilierter Programme (Binärdateien) notwendig (z.B. IDApro)
mögliche Schwachstelle: Passwort in Quellcode hart kodiert
Herausfinden des Passworts mittels einer Dissassembler-Analyse möglich
Statisches Hinterlegen von Passwörten und Krypto-Schlüsseln sehr anfällig
Warum Reverse Code Engineering?
kein Zugriff auf Quellcode
Überprüfen der Security-Anforderungen
Überprüfen des kompilierten Programms auf mögliche Schwachstellen
Gründe für den Einsatz von IT-Forensik
Wiederherstellung gelöschter Informationen
Analyse von Sicherheitsvorfällen
post mortem Analyse: IT-Forensiker hat Hinterlassenschaften/Spuren des Angriffs zur Verfügung (Logfiles, Timestamps etc.)
Sicherheitsvorfälle so schell wie möglich melden
Der Heartbleed-Bug
schwerwiegender Programmierfehler in OpenSSL (fehlende Überprüfung der gesendeten Payload-Länge)
veröffentlicht mit der Version 1.0.1 am 14. Märt 2012
Angriff hinterlässt keine verwertbaren Spuren auf dem System
betroffen waren alle Systeme, die OpenSSL in den entsprechenden Versionen verwendet haben
viele verschiedene Protokolle/Kommunikationskanäle betroffen
viele Server betroffen, da OpenSSL die meist verwendete SSL/TLS-Bibliothek bei Webservern ist
Wodurch ist der Bug entstanden?
Implementierung von Heartbeat-Verfahren für DTLS-Verbindungen
Funktion wurde von einem Studenten in seiner Dissertation zum SCTP-Protokoll entwickelt und als Entwurf bei OpenSSL eingereicht
2011 wurde es offiziell bei OpenSSL eingeführt
Hauptproblem hierbei: eigene Funktionen für Allokation (malloc) und Deallokation (free) von Speicher implementiert, fehlende Überprüfung der tatsächlichen übergebenen Länge der Daten
Bedrohungen durch den Bug
Auslesen des Speichers der Anwendung (z.B. Zugangsdaten (Benutername, Passwort), privater Server-Key)
Man-in-the-Middle-Angriffe mit dem ausgelesenen Server-Key
Entschlüsselung von SSL/TLS-verschlüsselten Verbindungen
SSL-Zertifikate können nicht zuverlässig und flächendeckend gesperrt werden
Browser arbeiten meist mit statischen Sperrlisten
Online-Überprüfung nur teilweise genutzt
Vertrauensverlust auf Betreiberseite
Schutzmöglichkeiten
Perfect Forward Secrecy: Schutz gegenüber nachträglichem Entschlüsseln aufgezeichneter verschlüsselter Daten
Einsatz von IDS/IPS: Muster hinzufügen/anpassen, das Heartbleed-Angriffe erkennt
Erstellen neuer SSL/TLS-Server-Keys und Zertifikate
Austausch aller genutzten SSL-Zertifikate
Benutzer informieren
Passwörter ändern
Aktive IT-Security-Analysen
Voraussetzungen
Systeme für die Analyse festlegen
Rahmenbedingungen schaffen
Festlegen der eingesetzten Tools
Intensität der Kompromittierung bzw. Tiefe der Eindringung festlegen
Umfang und Details der Dokumentation
Ziele der Security-Analyse definieren
System verwundbar?
Verwundbarkeiten ausnutzen?
Maßnahmenplan für die Mitigation von Verwundbarkeiten
Vorhandene Tools
nmap (Netzwerkanalysewerkzeug und Portscanner)
kann sensible Informationen über verwendete Protokolle, Versionsnummern, Webserver und Betriebssysteme liefern (z.B. ssh v5.5p1, Apache 2.2.16 Debian, Linux 2.2.32)
darüber lassen sich Verwundbarkeiten in den einzelnen Komponenten herausfinden
Potentielle Schwachstellen
SQL-Injections und Cross Site Scripting (XSS) durch fehlende Eingabevalidierung
Maßnahme: Eingabevalidierung für alle vom Client an den Server übergebenen Parameter (GET und POST)
Path Traversal durch Angabe eines eigenen Pfades in einer File-Upload-Funktion
Maßnahme: Filterung des Dateinamen auf unzulässige Zeichen
Konfigurationsfehler (z.B. in der Upload-Funktion): Automatisches Setzen des Execute-Flags für hochgeladene Dateien
Maßnahme: Funktion so umschreiben, dass Execute-Flag nicht mehr gesetzt wird
Verstecktes Admin-Menü
Maßnahme: Anzeigen der Seite nur nach Überprüfung der notwendigen Berechtigungen
Unverschlüsselte Datenübertragung
Maßnahme: Umstellen von HTTP auf HTTPS-Verbindungen und Setzen der Secure-Cookie-Funktion im Webserver
kein Einsatz von bereits geknackten SSL-Versionen (am besten TLS)
robots.txt-Datei: gibt sensible Daten über Datei-/Verzeichnispfade auf dem Webserver frei
Maßnahme: keine Verzeichnisse auflisten, die durch einen Webcrawler gefunden werden können
Web-Security
Penetrationstest
ein umfangreicher Sicherheitstest einzelner Rechner oder Netzwerke
Prüfung der Sicherheit möglichst aller Systembestandteile und Anwendungskomponenten
Nutzen von Mitteln und Methoden eines Angreifers
Ziel: unautorisiert Zugang zu einem System bekommen
Techniken
Bufferoverflow Angriffe
Code Injection und Code Execution
Cross Site Scripting (XSS)
XML External Entity Processing (XXE)
Man-in-the-Middle-Angriffe
Path Traversal Angriffe
SQL Injection
Session Manipulation
Cross Site Scripting (XSS)
Problem: fremder Code eines Angreifers wird durch Eingabeparameter oder Eingabefelder in eine Website eingeschleust
bösartiger Code kann durch Anfrageparameter, Formulare oder Suchmasken übergeben werden
Ziel: Unterschiebung manipulierter Daten zu einem Benutzer
Auslesen von Session-IDs, Cookies (Übernehmen der Benutzer-Session)
Abfangen von User-Credentials
Manipulation von übertragenen Daten
Typen von XSS
Reflektiert
kurzzeitige einmalige Ausführung von JavaScript über einen Link oder falsche Eingabe
Opfer werden einzeln infiziert
Persistent
dauerhafte Ausführung des Codes, wenn man die Seite aufruft
z.B. Foreneintrag oder Nutzername
XSS steht hierbei meistens direkt in der Datenbank
alle Benutzer der Seite sind betroffen
DOM-Based
Code liest Anfrageparameter aus der URL aus
Anfrageparameter enthalten JavaScript
schwierig zu finden
XML External Entity Processing (XXE)
Angriff auf den zugrundeliegenden XML-Parser
<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE foo [
<!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "file:///dev/random" >]><foo>&xxe;</foo>
Zeile 1: Document Type Definition (DTD)
Zeile 2: Ausgabe
xxe: Variable wird deklariert
&xxe;: Variable wird eingefügt
file:: Gibt das Protokoll an
Angriffsarten
Auslesen von Dateien
Portscan interner Ressourcen
Ansteuern von REST APIs
Mails verschicken
Besonderheiten
JRE und SMTP sind beide Plain-Text-Protokolle und erlauben somit die Versendung von Kontrollzeichen wie bspw. Line Feeds <LF> oder Carriage Returns <CR>
Vermeidung von XXE
XML External Entity Processing beim XML-Parser deaktivieren
ansonsten: Input sanitization, Output Encoding
Path Traversal
Zugriff auf andere Dateien im Dateisystem erlangen (außerhalb des Webserver-Verzeichnisses)
direkt über URL-Parameter möglich (“Dot-Dot-Slash-Methode”: ../../../file)