IT Security Lecture
- Motivation (Vulnerabilities, Exploits, Angreifer)
- Sicherheitsziele (Confidentiality, Integrity, Availability)
- Malware (Viren, Würmer, Trojaner, Botnets, Ransomware, Cryptojackers)
- Netzwerksicherheit (VPN, Wireless Security, Firewalls/IDS/IPS/WAF)
- Sicherheitsmanagement und -rorganisation
- Threat Modeling
- Penetration Testing
Semester 2 - Anwendungssicherheit und Systementwicklungslebenszyklus
- Open Web Application Security Project (OWASP)
- Cross-Site Scripting (XSS)
- Injection
- Authentifizierungsfehler
- Authorisierungsfehler
- Sensible Daten
- Unsichere Abhängigkeiten und Konfigurationen
- XXE & Deserialisierung
- Sicherer Entwicklungslebenszyklus
1. Motivation
Security: Frei von Gefahren und Bedrohungen
Vulnerability : Fehler oder Schwäche eines Sicherheitskonzepts, die zu einer Sicherheitslücke oder Ausnutzen des Fehlers führen kann
Exploit: Programme oder Daten, die zur Ausnutzung eines Bugs oder einer Schwachstelle von elektronischen Geräten genutzt werden können
Zero-Day: Herstellerunbekannte Schwachstelle, die ausgenutzt wird bevor der Hersteller die Schwachstelle kennt. (Auch: Zero-Day Attack)
ATP (Advanced Persistent Threat): Unbemerktes Daten abfangen eines Systems über längere Zeit (meist durch Staat)
Angreifertypen
Gefährliche Kombinationen
- Angreifer + frustrierte Mitarbeiter
- Staat + frustrierte Mitarbeiter
- Blackhats + Betrüger / Krmininelle
- Blackhats + Skriptkiddis
2. Sicherheitsziele
- Nichtveränderbarkeit
- Nachvollziehbarkeit
- Authentizität
- Pseudoanonymität
- Verifizierbarkeit
- Integrität (Integrity): Schutz vor Änderung oder Löschung von Informationen durch Sicherstellung, dass die Daten nicht manipuliert werden können. [Unterstützt durch: Hashing, digitale Signaturen, manipulationssichere Verpackung]
- Beispiel: Netzwerk Traffic mitschneiden, Whistleblower, Social Engineering
- Vertraulichkeit (Confidentiality): Schutz vor Weitergabe von Informationen an Unbefugte [Unterstützt durch: Authentifizierung, Autorisierung, Verschlüsselung, Anonymität, Geheimhaltung]
- Beispiel: eigener Wifi AP, Social Engineering
- Ausfallsicherheit / Verfügbarkeit (Availability): Sicherstellung der Verfügbarkeit der Dienste und Sicherstellung des Zugriffs auf Informationen für authorisierte Personen, wenn diese benötigt werden. [Unterstützt durch: Zugänglichkeit, Fehlertoleranz, Redundanz, Sicherung, Testen]
- Beispiel: DDoS Attacke, EMP, Social Engineering
Informationssicherheit: Schutz vor unbedigten Zugriff / Änderung / Störung von Informationen oder Informationssystemen
Kontrolle: Schutz vor der Kontrolle von sensiblen Daten durch unauthorisierte Personen. [Unterstützt durch: Verschlüsselung, Authentifizierung]
Authentizität: Versicherung, dass eine Nachricht tatsächlich von der angegebenen Quelle stammt. [Unterstützt durch: Identifikation, digitale Zertifikate]
Verantwortlichkeit: Nachvollziehbarkeit und Verantwortlichkeiten unter Berücksichtigung der rechtlichen und vertraglichen Pflichten. [Unterstützt durch: Integrität, Authentizität, Design, Politik]
Versicherung: Regelmäßige Kontrolle der oben genannten Sicherheitsziele zur Sicherstellung von technischen- und betrieblichen Sicherungsmaßnahmen. [Unterstützt durch: Auditing, Measuring, Monitoring, kontinuierliche Verbesserung]
Das CIA³-Modell
- Confidentiality
- Integrity
- Availability
- Accountability
- Assurance
Maßnahmen zur Einhaltung der Sicherheitsziele
Sicherheitsziel |
Technische Maßnahmen |
Organisatorische Maßnahmen |
Confidentiality |
Zugangskontrolle, RSA, Diffie-Hellman, PGP, HTTPS |
Berechtigungen, Datensparsamkeit |
Integrity |
SHA256, PGP |
Versionskontrollprozess |
Availability |
Redundanter Server, Firewall, Load Balancer |
24/7 Support, SLAs |
Accountability |
keine shared Accounts, Logging |
RACI-Matrix |
Assurance |
Alte Accounts deaktivieren, SIEM (Security Incident and Event Monitoring) |
Rechteprüfung, Notfallübung, Sensibilisierungstraining |
3. Malware
Kategorien
-
Virus: Computerviren verbreiten sich durch infizierte Dateien oder Computersysteme und anschließender Replizierung von sich selbst. Für den Erhalt eines Virus ist eine Benutzerinteraktion erforderlich. Es gibt harmlose und gefährliche Viren.
-
Wurm: Würmer sind Viren, die keine Benutzerinteraktion erfordern.
-
Trojanisches Pferd: Trojanische Pferde sind Viren, die in einem (nützlichen) Computerprogramm versteckt sind.
-
Spyware: Software, die Informationen eines Systems ohne Einwilligung sammelt (Bsp. Tastaturdaten, Screenshots, Email-Adressen). Die gesammelten Daten werden häufig online verkauft und dienen für Spam, Marketingzwecke, Identitätsdiebstahl etc.
-
Rootkit: Software, die ohne Wissen des Benutzers installiert und ausgeblendet werden kann und Aktionen überwachen, Programme ändern oder andere Funktionen ausführen kann.
-
Ransomware: Verweigerung des Zugriffs auf ein System, bis ein Lösegeld bezahlt wurde (Bsp. Verschlüsselung von Daten). Verbreitung erfolgt über zugängliche Systeme (Bsp. geteilte Laufwerke)
-
Cryptojacker: Software, die unbemerkt installiert wird und die Rechenleistung des infizierten Rechners für Cryptomining ausnutzt. Der Angriff bleibt durch eine etwas geringere Auslastung des Systems häufig unbemerkt.
-
Botnet: Geräte, die durch einen Virus o.ä. infiziert wurden und in der Kontrolle der Angreifer sind, können zu einem Bot-Netzwerk werden und somit verteilte Aktivitäten unbemerkt durchgeführt werden. (Bsp. Verbreitung von Spam und Viren, DoS-Attacken)
Anti-Virus Software (AV)
Anti-Virus Software (auch: Anti-Malware Software) ist eine Software zum Verhindern, Erkennen und Entfernen von Malware.
Die Software verwendet für die Erkennung von Malware folgende Identifikationsmethoden:
- Signaturbasierte Erkennung
- Heuristiken
- Rootkit-Erkennung
- Echtzeit-Sicherung
Nachteile von Anti-Viren Software:
- (Abo-)Kosten
- geringere Performance
- falsche Warnmeldungen
- kein Schutz gegen neue Viren (Polymorpher Code)
- Beschädigung von Dateien (beim Entfernen von Malware)
- möglicher Angriffsweg (durch den OS-Zugriff)
Top 5 Sicherheitsstrategien von Sicherheitsexperten
- Software Updates installieren
- Verwendung einzigartiger Passwörter
- 2-Faktor-Authentifizierung verwenden
- Starke Passwörter benutzen
- Passwort Manager verwenden
4. Netzwerksicherheit
OSI-Model
Siehe Technische Grundlagen der Informatik
VPN (Virtual Private Network)
- VPN bietet einen Sicherheitsmechanismus für verschlüsselten und gekapselten Netzwerk Traffic
- VPN dient als “sicherer Tunnel” durch ungesicherte Netzwerke zum Zielsystem
Verwendung von VPN:
-
Remote Access VPN: Verbindung eines Computers mit einem entfernten, privaten Netzwerk (Bsp. Heimnetzwerk)
-
Site-to-Site VPN: Verbindet zwei private Netzwerke oder Teile eines Netzwerks. Hierdurch können Organisationen eine sichere VPN-Verbindung über das Internet zu anderen Organisationen herstellen.
-
Site-to-Site VPN (Intranet): Bei besonders sensiblen Daten kann eine VPN Verbindung zweier Abteilungen über das Intranet geschützt werden. (Bsp. HR-Daten und Finanzabteilung)
Wireless Security
Beispiele für angreifbare Wireless Technologien:
Vorschläge für Wireless Security
- Außer Haus: Wifi ausschalten
- Alte Netzwerke löschen
- Verwenden uninteressanter WiFi SSID-Namen
- “Wired to WiFi broadcasts” abschalten
- Ausschließliche Verwendung von 5GHz
- Verwendung von kabelgebundenen Kameras
- Bluetooth-Geräte zu Hause verbinden
- (NFC)-Karten sicher verstauen
- Arbeits- und Identifikationskarten versteckt halten
Datencenter Sicherheit
-
Netzwerk Firewall: Beobachtet und filtert Netzwerk Traffic auf basis benutzerdefinierter Regeln. Soll böswillige Zugriffe auf Server verhindern und nur legitimen Traffic zulassen.
- Stateless Firewall: Überprüft isoliert einzelne Pakete und lässt diese auf Basis des Headers zu oder nicht.
- Stateful Firewall: Bestimmen den Verbindungsstatus von Paketen und können verwandte Pakete sammeln. Die Regeln werden auf den Datenverkehr angewendet.
- Anwendungsfirewall (Proxy-Based Firewall): Analysieren die übertragenen Daten und Regeln können für einzelne Dienste / Anwendungen spezifisch angewendet werden.
-
Firewall Regeln (Beispiel): FROM
source TO
destination ALLOW|BLOCK
protocol PORT
port(s)
-
DMZ (DeMilitarized Zone): Teilnetz, welches Zugriff auf öffentliche Dienste hat und gleichzeitig interne Netze erreichen kann. Dieser Bereich ist mit einer Firewall durch den Angriff aus dem öffentlichen Netz geschützt und durch eine weitere Firewall vom internen Netz getrennt.
-
IDS (Intrusion Detection System): [Einbruchserkennungssystem] Überwacht ein Netzwerk oder System auf böswillige Aktivitäten und meldet diese.
-
IPS (Intrusion Prevention System): [Einbruchsverhinderungssystem] Erweitert das IDS durch die Überwachung von Netzwerk Traffic und Systemaktivitäten und kann den erkannten Einbruch aktiv verhindern bzw. blockieren.
-
Einschränkungen:
- Hohe Anzahl von Fehlalarmen sorgt für das Ignorieren oder Übersehen von realen Angriffen
- Kann keine Netzwerkschwächen kompensieren
- Verschlüsselte Pakete werden nicht durch IDS verarbeitet
-
NIDS (Network IDS): Anwendung eines IDS im Netzwerk
-
HIDS (Host IDS): Anwendung und Überwachung auf einem einzelnen Host. Hierbei werden Systemdaten mit vorherigen zuständen beobachtet und Änderungen von kritischen Systemdaten gemeldet.
5. Sicherheitsmanagement und Organisation
Jobtitel und -beschreibungen
-
Security Analyst: Analyse und Bewertugen von Schwachstellen in der Infrastruktur (Software, Hardware, Netzwerk). Anschließende Empfehlung von Best Pracises und Lösungen.
-
Security Engineer: Analyse von Daten und Protokollen zur Sicherheitsüberwachung.
-
Security Architect: Entwirft das Sicherheitssystem
-
Security Administrator: Installiert und verwaltet Sicherheitssysteme der Organisation
-
Security Software Developer: Implementiert Sicherheit in Anwendungssoftware und entwickelt Sicherheitssoftware und -tools.
-
Chief Information Security Officer: Führungsposition mit Verantwortung für die gesamte Abteilung.
-
Penetration Tester: Sucht nach Schwachstellen, identifiziert sie und nutzt sie aus (als Nachweis).
-
Cyber Incident Response Team (CIRT): Gruppe, die für die Reaktionen auf Sicherheitsverletzungen, Viren und Sicherheitsvorfälle zuständig ist.
- 1. Vorbereitung: Reaktionsplan / -strategie
- 2. Identifizierung: Schadenserkennung
- 3. Eindämmung: Verhinderung weiterer Schäden
- 4. Ausrottung: Beseitigung der Bedrohung und zurücksetzen der Systeme
- 5. Widerherstellung: Testen, Überwachen, Validieren und Inbetriebnahme
- 6. Lessons Learned: Aus Angriff lernen und Sicherheitssystem verbessern
Security Awareness
- Schulungsprogramme für Mitarbeiter
- Individuelle Verantwortung für Sicherheitsrechtlinien des Unternehmens
- Maßnahmen zur Prüfung (Audits)
Schritte von Security Awareness
- Aktuellen Zustand ermitteln
- Security Awareness Programm ermitteln
- Bereitstellung des Programms für Mitarbeiter
- Messung der Fortschritte und ggf. Überarbeitung des Programms
6. Threat Modeling
- Identifizierung und Priorisierung potenzieller Bedrohungen und Schwachstellen aus der Sicht eines hypothetischen Angreifers
- Zweck: Systematische Analyse des Profils eines Angreifers und Ermittlung des wahrscheinlichsten Angriffspunkts - zum Nutzen der Verteidiger
Gründe für die Bedrohungsmodellierung
- Sicherheitslücken frühzeitig finden
- Verstehen der eigenen Sicherheitsanforderungen
- Entwicklung und Lieferung besserer Produkte
- Behebung von Problemen, die nicht durch anderen Technologien behoben werden (können)
Angriffsbäume
- Darstellung von Angriffen eines Systems durch eine Baumstruktur
- Das Ziel wird als Wurzelknoten dargestellt
- Angriffsmöglichkeiten werden als Blätter dargestellt
- Angriffsmöglichkeiten können durch
AND
verbunden werden
- Blätter werden durch
I (Impossible)
oder P (Possible)
gekennzeichnet
- Potentielle Angriffswege werden durch gestrichelte Linien dargestellt
Trust Boundaries (Vertrauensgrenzen)
- Bedrohungen, die Vertrauensgrenzen überschreiten sind relevante Bedrohungen
7. Penetration Testing
Versuch einer Bewertung der Sicherheit von IT-Infrastruktur durch kontrolliertes Angreifen, Identifizieren und Ausnutzen von Sicherheitslücken
Phasen von Pen-Tests
1. Interaktionen vor dem Pen-Test
- Absprache des Umfangs und Vertragsregelungen
- Rahmenbedingungen
- Notfallkontakt Informationen
2. Informationen sammeln
3. Threat Modeling
4. Schwachstellenanalyse
- automatisierte Anwendungsscans
- Netzwerkscans
- Traffic / Metadaten Analyse
5. Exploitation / Ausnutzung
- Vermeiden von Gegenmaßnahmen
- Unerkannt bleiben
- Durchführung angepasster Exploits
6. Nachnutzung der Schwachstelle
- Infrastruktur-Analyse
- Plünderung z.B. von Informationen
- Installation einer Backdoor
- Aufräumen der Spuren
7. Berichterstattung
- Zusammenfassung (allgemeiner Bericht)
- Technischer Bericht (technische Details, Angriffspfad und Korrekturvorschläge)
Bug Bounty Programme
Einzelpersonen erhalten für das Melden von Fehlern (Bugs) eine Belohnung.
Web Security Policies Security.txt
Ein Dokument, welches den Prozess zum Aufdecken / Melden von Sicherheitslücken beschreibt.
Inhalt:
- Kontakt: Adresse, an die der Fehler gemeldet werden soll
- Verschlüsselung: Verschlüsselungsschlüssel für die Kommunikation
- Danksagung: Link zur Anerkennungsseite der gemeldeten Fehler
. Berechtigung: Beschreibung der Berechtigungen des Testens auf der Seite
- Richtlinie: Link zur Sicherheitsrichtlinie
- Signatur: Link einer externen Signaturdatei zur Authentifizierung der security.txt
- Anstellung: Verknüpfung zu den sicherheitsrelevanten Stellen des Anbieters
8. OWASP
Open Web Application Security Project
Grundwerte
- OFFEN: Hohe Transparenz von allem
- INNOVATION: Unterstützung von Innovation und Experimenten zur Lösung von Sicherheitsherausforderungen
- GLOBAL: Keine Beschränkung auf Länder / Kontinente
- INTEGRITÄT: Ehrliche und Herstellerneutrale Gemeinschaft
OWASP Top 10
|
|
|
|
1 |
Injection |
6 |
Security Misconfiguration |
2 |
Broken Authentication |
7 |
Cross-Site-Scripting (XSS) |
3 |
Sensitive Data Exposure |
8 |
Insecure Deserialization |
4 |
XML External Entities |
9 |
Using Components with Known Vulnerabilities |
5 |
Broken Access Control |
10 |
Insufficient Logging & Monitoring |
9. Cross-Site-Scripting (XSS)
- XSS sendet ein bösartiges Skript an einen Ahnungslosen Anwender
- Das Skript wird vom Browser nicht erkannt und ausgeführt
Auswirkungen
- Stehlen der Session des Nutzers
- Stehlen von sensiblen Daten
- Neuschreiben der Website
- Weiterleiten der Nutzer auf eine schädliche Website
Risikobewertung
Ausnutzbarkeit |
Häufigkeit |
Erkennbarkeit |
Einfluss |
Einfach |
weit verbreitet |
Einfach |
mittelschwer |
-
Reflected XSS:
- Anwendung liefert den erhaltenen HTTP-Request direkt wieder aus
- Auswertung auf dem Server
-
Stored XSS:
- Angreifer führt zuerst einen Request durch und speichert das XSS
- Bsp. Kommentare / Reviews
viewed at a later time by another user
-
DOM XSS:
- Statisches HTML
- XSS wird nur im DOM ausgewertet, nicht auf dem Server
- findet direkt im Browser statt (es wird nichts zum Server geschickt)
Prävention
- keinen Userinput als Ausgabe anzeigen
- Userinput codieren
- Eingabeüberprüfung per Whitelist oder Verwendung eines HTML Sanitizers
Eingabevalidierung
Black List:
- Alles erlauben, was nicht explizit verboten ist
- kann durch maskieren von Zeichen umgangen werden
- muss aktualisiert werden
White List:
- Alles verbieten, was nicht explizit erlaubt ist
- muss mit der Zeit gewartet werden, um nicht schlechter zu werden
- mühsamer, aber kann sicherer sein
Umgehen Client-seitiger Validierung
- Client Side Validation bietet keine Sicherheit!
- ausgehende HTTP-Anfragen können manipuliert werden
- direkte Interaktion mit dem Backend
10. Injection
Eine Anwendung dazu bringen ungewollte Befehle einzubinden und durch den Interpreter anschließend ausführen zu lassen.
Risikobewertung
Ausnutzbarkeit |
Häufigkeit |
Erkennbarkeit |
Einfluss |
Einfach |
verbreitet |
Einfach |
Schwer |
Typische Auswirkungen
- Umgehung von Authentifizierung
- Daten ausspähen
- Daten manipulieren
- Übernahme des Systems
Beispiele
admin'--
admin'/*
' OR 1=1--
' OR 1=1/*
') OR '1'='1
') OR ('1'='1
Blind SQL Injection
Ausprobieren, um Schwachstellen durch Reaktionen des Systems zu erkennen
Beispiele
- Boolsche Ausdrücke (z.B.
AND 1 = 2
or AND 1 = 1
)
- Pausen (z.B.
WAITFOR DELAY '00:00:10'--
)
Prävention
- Interpreter vermeiden
- Schnittstelle verwenden, die Variablen unterstützt (Bsp. PreparedStatement, Hibernate etc.)
- Eingabevalidierung per Whitelist
- DB User sollte möchlichst wenig Rechte haben
11. Authentifizierungsfehler
- Brute-Force oder automatisierte Angriffe
- schwache, bekannte oder übliche Passwörter
- schlechte Prozesse zur Wiederherstellung von Anmeldeinformationen (Bsp. Passwort vergessen)
- schlecht oder gar nicht verschlüsselte Passwörter
- keine MFA
- Session IDs in URL
- schlechtes Session Management
Risikobewertung
Ausnutzbarkeit |
Häufigkeit |
Erkennbarkeit |
Einfluss |
Einfach |
verbreitet |
Mittelmäßig |
Schwer |
Prävention
- Verwendung einzigartiger und Case-Insensitiver User IDs
- Validiere E-Mail Adressen, wenn diese als Nutzername verwendet werden
- Verwendung starker Passwörter (mind. 10 Zeichen)
- keine regelmäßigen Passwortänderungen erzwingen
- Vermeiden von Regeln zur Passworterstellung
- Bekannte oder schlechte Passwörter nicht zulassen
- Passwörter nur über TLS senden
- Brute-Force Attacken verhindern (z.B. durch Wartezeit, maximale Versuche etc.)
Sicherer Passwort-Wiederherstellungsprozess
- Sammeln von Identitätsdaten oder Sicherheitsfragen
- Verifizieren der Sicherheitsfragen
- Konto sofort sperren
- Token über einen anderen Kanal senden
- Nutzer das Passwort ändern lassen
- Protokollieren
Zwei-Faktor-Authentifizierung
- zusätzlicher Faktor zur Authentifizierung
- Bsp:
- SMS
- Authenticator App
- Hardware Key
Passwort Manager
Passwort Manager verwalten beliebig viele Nutzerdaten und bieten den Zugriff über ein Master-Passwort. Hierdurch können einzigartige und komplexe Passwörter generiert werden.
Beispiele
12. Authorisierungsfehler
- Zugreifen auf nicht autorisierte Funktionen oder Daten
- Anzeigen vertraulicher Daten
- Änderung von Daten anderer Nutzer
- Änderung von Zugriffsrechten
Übliche Angriffszenarien
- Manipulation der URL oder der Seite
- Änderung des Primärschlüssels anderer Nutzereinträge
- Erhöhen der eigenen Rechte
- Als Admin ausgeben
- Verwendung der API ohne Berechtigungen
Risikobewertung
Ausnutzbarkeit |
Häufigkeit |
Erkennbarkeit |
Einfluss |
Mittelmäßig |
verbreitet |
Mittelmäßig |
Schwer |
Prävention
- vertrauenswürdige, serverseitige Zugriffskontrolle
- Einmal Zugriffskontrollmechanismen entwickeln und überall verwenden
- Verzeichnisliste des Webservers deaktivieren
- Fehler bei der Zugriffskontrolle protokollieren und ggf. melden
- Zugriffsversuche der API beschränken
- ungültige Zugriffstoken nach Abmeldung
- Zugriffskontrolle durch Unit-, Integrationtest und QA sichern
13. Sensible Daten
- Passwörter
- Kreditkartennummern
- Gesundheitsdaten
- Persönliche Informationen
- Name und Vorname
- Adresse
- Email Adresse
- Personalausweisnummer
- Geodaten
- IP Adresse
- …
- Geschäftsgeheimnisse
Preisgabe sensitiver Daten
- Fehler beim Ermitteln der Schutzanforderungen
- Übertragung im Klartext (Bsp. HTTP)
- Verwendung schwacher Verschlüsselung
- Keine Verschlüsselung durch den Browser
- Fehlende Zertifikatsprüfung
Risikobewertung
Ausnutzbarkeit |
Häufigkeit |
Erkennbarkeit |
Einfluss |
Mittelmäßig |
weit verbreitet |
Mittelmäßig |
Schwer |
Prävention
- Klassifizierung von Daten und deren Wichtigkeit
- sensible Daten nicht ohne wichtigen Grund speichern
- Einsatz aktueller Technologie (Algorithmen, Protokolle, Schlüssel)
- Sicherstellung eines guten Kryptografieschutzes, selbst wenn die Zugriffskontrolle umgangen werden sollte
14. Unsichere Abhängigkeiten und Konfigurationen
Unsichere Abhängigkeiten
Häufige Fehler bei Anhängigkeiten
- Keine Ahnung / Kontrolle der verwendeten Versionen der Abhängigkeiten
- Verwendete Abhängigkeit ist anfällig für Angriffe oder wird nicht mehr unterstützt
Risikobewertung
Ausnutzbarkeit |
Häufigkeit |
Erkennbarkeit |
Einfluss |
Mittelmäßig |
weit verbreitet |
Mittelmäßig |
mild |
Prävention
- Nicht verwendete oder unnötige Abhängigkeiten vermeiden und entfernen
- Kontinuierliches Überwachen der Schwachstellen von Abhängigkeiten
- Nur offizielle Abhängigkeiten von sicheren Links einbinden
- Regelmäßiges Aktualisieren der Versionen aller Abhängigkeiten
Unsichere Konfigurationen
Häufige Fehler:
- Falsch konfigurierte Berechtigungen
- Unnötige Funktionen wurden aktiviert / installiert
- Standardkonten oder -credentials sind noch aktiviert
- Preisgabe zu vieler Informationen (Bsp. Stacktrace)
- Deaktivierung von den neuesten Sicherheitsfunktionen
- Veraltete oder Anfällige Software
Potentielle Auswirkungen
- unauthorisierter Zugriff auf Systemdaten oder -funktionalitäten
- Systemübernahme durch z.B. Backdoors
Risikobewertung
Ausnutzbarkeit |
Häufigkeit |
Erkennbarkeit |
Einfluss |
Einfach |
weit verbreitet |
Einfach |
mild |
Web Shells
Web Shells sind Skripte, die auf einem Webserver hochgeladen werden können und für eine Remotevewaltung zum Server sorgen. Sie können in jeder Sprache geschrieben werden, die der Zielserver unterstützt.
Prävention
- Entwicklungs-, Qualitätssicherungs- und Produktionsumgebung identisch konfigurieren
- segmentierte Anwendungsarchitektur
- Regelmäßige Überprüfung der Konfigurationen
15. XXE und Deserialisierung
XXE - (XML External Entities)
XML Entities sind “Variablen” in XML, die später referenziert werden können. Bsp:
<!ENTITY foo "FOO">
<!ENTITY foo "https://raw.githubusercontent.com/bkimminich/juice-shop/gh-pages/entities.dtd">
<foobar>&foo; &bar;</foobar>
Viele ältere oder schlecht konfigurierte XML-Prozessoren werten (externe) Entities aus und Angreifer können potentiell folgende Angriffe durchführen:
- interne Dateien offenlegen
- internes Port-Scannen
- Remote-Code Execution
- DoS Attacken
Risikobewertung
Ausnutzbarkeit |
Häufigkeit |
Erkennbarkeit |
Einfluss |
Mittelmäßig |
verbreitet |
Einfach |
Schwerwiegend |
Prävention
- richtige Konfiguration des XML-Parsers:
- kein parsen jeglicher Entities
- kein parsen von externen Entities
Deserialisierung
Serialisierung wandelt ein Objekt in einen Bytestream um, welcher ausreichend Informationen zur Herstellung einer Ausgangszustands besitzt.
Deserialisierung wandelt einen Bytestream wieder in ein Objekt um. Beispiel in Java:
InputStream is = request.getInputStream();
ObjectInputStream ois = new ObjectInputStream(is);
AcmeObject acme = (AcmeObject)ois.readObject();
Unsichere Deserialisierung sorgt häufig für eine Remote-Code Execution und kann folgende Attacken ausführen:
Risikobewertung
Ausnutzbarkeit |
Häufigkeit |
Erkennbarkeit |
Einfluss |
Schwierig |
verbreitet |
Mittelmäßig |
Schwerwiegend |
Prävention
- Vermeiden von nativen Deserialisierungsformaten
- Verwendung von JSON / XML
- Verwendung von DTOs (Data Transfer Objects)
- Signierung der serialisierten Objekte und Prüfung bei Deserialisierung
- isolierte Deserialisierung mit geringen Berechtigungen
16. Sicherer Entwicklungslebenszyklus
- Späte Erkennung von Fehlern ist immer teurer als frühe Erkennung
- Security muss in alle Phasen des Entwicklungsprozesses eingebunden sein
- Sicherheitsexperten und Management-Unterstützung sind notwendig
Sicherheitsanforderungen
Ableiten von Sicherheitsanforderungen
- Sicherheitsanforderungen mit fachlichem Stakeholder ableiten (beim Anforderungsmanagement)
- Bsp.
- Datensicherheit
- Zugriffskontrolle
- Wie kritisch sind die Daten?
- Verfügbarkeit
- Vorgaben durch Industriestandards
Sicherheits-Designprinzipien
-
Angriffsflächen minimieren
- Unnötige Features vermeiden
-
sichere Standardeinstellungen
- Sicherheit als Standard - Benutzer entscheiden Reduzierung ihrer Sicherheit
-
Prinzip des geringsten Privelegs
- Keine “root”-User verwenden
- möglichst minimale Rechte für den User
-
Prinzip der Tiefenverteidigung
- Mehrere Sicherheitsschichten bieten
-
Fail securely
- Wenn etwas schief geht, dann sollte “die Tür zugemacht werden”
-
Keinen Diensten vertrauen
- Nicht blind (externen) Systemen, mit denen man interagiert vertrauen
-
Aufgabentrennung
- Aufgaben trennen zur Betrugsvermeidung
- Bsp: Admin darf nicht gleichzeitig User sein
-
"Security by Obscurity" vermeiden
- Verstecken von Funktionen bietet keinen Schutz gegen Angreifer
-
Sicherheit einfach halten
- Einfaches Security Design
-
Korrekte Behebung von Sicherheitsproblemen
- Keine Symptome, sondern Ursachen beheben
Sichere Entwicklungsrichtlinien
- Secure Coding Guidelines werden häufig von Entwicklern übersehen
- Checklisten (kurz gehaltene Dokumente) funktionieren besser
Security Testing
Bsp. SonarQube, SpotBugs (früher FindBugs)
Statische Code-Analyse
Stärken:
- skaliert gut
- automatisierte Tests, ohne dass die Anwendung läuft
- generierter Output kann gut von Entwicklern für Verbesserungen verwendet werden
Schwächen:
- False-Positives (Falsche Fehlermeldungen)
- Viele Sicherheitslücken sind schwierig zu finden
- Nur ein kleiner Teil kann abgedeckt werden
- Schwierig eine Schwachstelle tatsächlich nachzuweisen
Bsp: ZAP (Zed Attack Proxy)
Dynamisches Testing auf Sicherheit wird bei laufenden Anwendungen durchgeführt und können automatisiert oder teilweise manuell Tests durchführen.
Logging und Monitoring
Angreifer können unentdeckt agieren, wenn sinnlos oder gar nicht geloggt wird oder nicht auf die Logs geschaut wird.
Wichtige Aspekte sind:
- Login
- Berechtigungswechsel
- Warnungen und Errormeldungen
- Suspekte Aktivitäten
Risikobewertung
Ausnutzbarkeit |
Häufigkeit |
Erkennbarkeit |
Einfluss |
Mittelmäßig |
weit verbreitet |
Schwierig |
Mittelmäßig |
Prävention
- ausreichendes und sinnvolles Logging von Login, Zugangskontrollen (-fehlern) und Server-Side Input
- Übersichtliche Logs in einem gesammelten System (Splunk, ELK-Stack)
- Erstellung eines Recovery-Plans
Web Application Firewall (WAF)
- Zusätzliche Firewall zur Kontrolle des Traffics
- Verhindert bösartige Requests
Risiken
- Zusätzliche IT-Infrastruktur
- kann viele False-Positives melden
- Selbstlernmechanismen können Schwierigkeiten beinhalten
- kann Fehler enthalten
- sehr teuer
WAF Modes
-
Blocking Mode: Normaler Modus, bei dem die WAF erkannten Traffic blockt.
-
Monitoring Mode: Die WAF alarmiert, aber blockt nicht.
-
Learning Mode: Die WAF lernt durch gutartigen Traffic, was normal und valide ist.
Sammlung nützlicher Links