Mitigation Strategies – Web Application Security
Schwachstellen wie XSS, SQL Injection oder CSRF zählen zu den häufigsten Bedrohungen moderner Webanwendungen. Hier erfährst du, wie du sie gezielt abwehrst.
Webanwendungen sind heute zentraler Bestandteil digitaler Infrastrukturen – von E-Commerce-Plattformen bis hin zu Unternehmensportalen. Mit ihrer zunehmenden Verbreitung steigt jedoch auch das Risiko von Sicherheitslücken, die von Angreifern ausgenutzt werden können. Dieser Artikel bietet einen umfassenden Überblick über bewährte Strategien zur Minderung gängiger Sicherheitsrisiken in Webanwendungen, basierend auf aktuellen Empfehlungen von OWASP und PortSwigger.
1. Web Cache Poisoning
Empfohlene Maßnahmen:
- Caching deaktivieren, wenn es nicht erforderlich ist.
- Caching auf statische Inhalte beschränken und sicherstellen, dass Versionierungsmechanismen nicht manipulierbar sind.
- Sicherheitsaspekte von Drittanbieter-Technologien verstehen und berücksichtigen.
- Unterstützte Header von CDNs überprüfen und entsprechend konfigurieren.
- Client-seitige Schwachstellen kontinuierlich überwachen und zeitnah patchen.
2. Informationslecks (Information Disclosure)
Empfohlene Maßnahmen:
- Sensibilisierung des Teams für den Umgang mit sensiblen Informationen.
- Vermeidung sensibler Kommentare im Quellcode; falls notwendig, nach Abschluss der Arbeiten entfernen.
- Generische Fehlermeldungen verwenden, um keine Hinweise auf die Anwendung zu geben.
- Entfernung sensibler Daten aus öffentlichen Repositories wie GitHub.
- Nicht benötigte Funktionen von Drittanbietern deaktivieren.
3. Unsichere Deserialisierung
Empfohlene Maßnahmen:
- Vermeidung der Deserialisierung von untrusted Input.
- Digitale Signaturen zur Integritätsprüfung vor der Deserialisierung einsetzen.
- Klassenspezifische Serialisierungsmethoden implementieren, um Kontrolle über exponierte Felder zu behalten.
- Generische Deserialisierungsfunktionen vermeiden, da sie private Felder enthalten können.
4. Authentifizierungsfehler
Empfohlene Maßnahmen:
- Übertragung von Anmeldedaten ausschließlich über verschlüsselte Verbindungen (HTTPS).
- Vertrauen nicht auf Client-seitige Sicherheitsmaßnahmen; Server-seitige Validierung ist essenziell.
- Fehlermeldungen bei Login-Versuchen sollten keine spezifischen Informationen preisgeben.
- CAPTCHA-Verifizierung nach mehreren fehlgeschlagenen Login-Versuchen implementieren.
- IP-basierte Rate-Limiting einsetzen.
- Mehrstufige Verifizierungsmechanismen wie 2FA nutzen.
5. SQL-Injektionen
Empfohlene Maßnahmen:
- Parametrisierte Abfragen (Prepared Statements) verwenden.
- Whitelist-Validierung für Eingaben, die nicht parametrisiert werden können (z.B.
ORDER BY-Klauseln). - Vermeidung von dynamischen SQL-Statements, die Benutzereingaben direkt enthalten.
- Eingaben strikt validieren und nur erlaubte Werte akzeptieren.
6. Cross-Site Scripting (XSS)
Empfohlene Maßnahmen:
- Eingaben frühzeitig filtern und validieren.
- Ausgabe kontextabhängig encodieren (z.B. HTML, JavaScript, CSS).
- HTTP-Header wie
Content-TypeundX-Content-Type-Optionskorrekt setzen. - Content Security Policy (CSP) implementieren, um die Ausführung unerwünschter Skripte zu verhindern.
7. Cross-Site Request Forgery (CSRF)
Empfohlene Maßnahmen:
- Unvorhersehbare CSRF-Tokens generieren und mit der Benutzersitzung verknüpfen.
- Übertragung der Tokens über POST-Anfragen in versteckten Feldern oder benutzerdefinierten Headern.
- Server-seitige Validierung der Tokens sicherstellen.
SameSite-Cookie-Attribut verwenden, um die Übertragung von Cookies bei Cross-Origin-Anfragen zu kontrollieren.
8. XML External Entity (XXE)
Empfohlene Maßnahmen:
- Deaktivierung gefährlicher XML-Features, die nicht benötigt werden.
XInclude-Support und die Auflösung externer Entitäten deaktivieren.
9. Cross-Origin Resource Sharing (CORS)
Empfohlene Maßnahmen:
- Spezifische Ursprünge im
Access-Control-Allow-Origin-Header angeben; Wildcards vermeiden. - Vermeidung von
null-Werten im Header. - CORS nicht als Ersatz für serverseitige Sicherheitsrichtlinien betrachten.
10. HTTP Request Smuggling
Empfohlene Maßnahmen:
- Wiederverwendung von Backend-Verbindungen deaktivieren.
- HTTP/2-Protokoll für Backend-Verbindungen verwenden, um Ambiguitäten zu vermeiden.
- Einheitliche Webserver-Software für Frontend- und Backend-Server einsetzen.
- Ambiguitäten in Anfragen erkennen und ablehnen.
11. OS Command Injection
Empfohlene Maßnahmen:
- Strikte Eingabevalidierung durchführen.
- Whitelist-Validierung für erlaubte Werte verwenden.
- Eingaben auf numerische Werte beschränken, wenn möglich.
- Nur alphanumerische Zeichen in Eingaben zulassen; keine Sonderzeichen oder Leerzeichen.
12. Server-Side Template Injection (SSTI)
Empfohlene Maßnahmen:
- Vermeidung der Modifikation oder Einreichung neuer Templates, sofern nicht erforderlich.
- Verwendung von "Logic-less" Template-Engines, um die Angriffsfläche zu minimieren.
- Ausführung von Benutzercode in einer sandboxed Umgebung.
- Deployment der Template-Umgebung in einem abgesicherten Container (z.B. Docker).
13. Directory Traversal
Empfohlene Maßnahmen:
- Keine Übergabe von Benutzereingaben direkt an Dateisystem-APIs.
- Zweistufige Validierung:
- Eingabevalidierung, um nur erlaubte Inhalte zu akzeptieren.
- Kanonisierung des Pfads und Überprüfung, ob er mit dem erwarteten Basisverzeichnis beginnt.
14. Zugriffskontrolle
Empfohlene Maßnahmen:
- Nicht auf Obfuskation als Zugriffskontrolle verlassen.
- Standardmäßig Zugriff verweigern und nur explizit erlauben, was notwendig ist.
- Zentrale Mechanismen für Zugriffskontrolle in der gesamten Anwendung verwenden.
- Regelmäßige Audits und Tests der Zugriffskontrollmechanismen durchführen.
15. WebSocket-Sicherheit
Empfohlene Maßnahmen:
- Verwendung von WebSocket über TLS (wss://).
- Hardcodierung der WebSocket-URLs, ohne benutzerkontrollierte Daten.
- Schutz der WebSocket-Handshake-Nachrichten vor CSRF-Angriffen.
- Sichere Handhabung von Daten auf Server- und Client-Seite, um Angriffe wie SQL Injection und XSS zu verhindern.
Fazit
Die Sicherheit von Webanwendungen erfordert ein umfassendes Verständnis potenzieller Schwachstellen und die Implementierung robuster Gegenmaßnahmen. Durch die Anwendung der oben genannten Strategien können Entwickler und Sicherheitsexperten das Risiko von Angriffen erheblich reduzieren und die Integrität ihrer Anwendungen gewährleisten.
5 Key Takeaways
- Frühe Validierung und Filterung von Benutzereingaben ist entscheidend, um viele Angriffsvektoren zu eliminieren.
- Verwendung sicherer Standards wie HTTPS, CSP und
SameSite-Cookies stärkt die Verteidigung gegen gängige Angriffe. - Regelmäßige Audits und Tests der Anwendung helfen, Schwachstellen frühzeitig zu erkennen und zu beheben.
- Bewusstsein und Schulung des Entwicklungsteams fördern eine sicherheitsorientierte Denkweise.
- Integration von Sicherheitsmaßnahmen in den gesamten Entwicklungsprozess (DevSecOps) erhöht die Resilienz der Anwendung gegenüber Bedrohungen.