XSS Sicherheitslücken und wie man diese durch Statische Codeanalyse aufdecken kann
Raum Rheinauen
Cross-Site-Scripting (XSS) steht auf Platz 3 der aktuellen "OWASP Top 10 Most Critical Web Application Security Risks" und ist eine der häufigsten und erfolgreichsten Methoden, um Webbrowser und Rechner von Internet-Benutzern anzugreifen. Dieser Vortrag erklärt zunächst XSS mit seinen verschiedenen Varianten. Dazu wird ein XSS Angriff an einem kleinen Beispiel demonstriert und im Code aufgezeigt, wie ein solcher XSS Angriff technisch funktioniert.
Danach wird erläutert, wie mit statischer Codeanalyse und dem Verfahren der "Taint-Analyse" (Datenflussanalyse) der Weg von kompromittierten Daten durch ein Softwaresystem gefunden und verfolgt werden kann.
Bei Webapplikationen muss die statische Codeanalyse einen kompletten Request/Response-Zyklus betrachten und dabei verschiedene Probleme bewältigen:
Typischerweise werden die Request-Daten von Webapplikations-Frameworks verarbeitet, die intern Dependency Injection (Inversion of Control) nutzen und bei denen daher eine statische Analyse ohne zusätzliche Kontextinformationen nichts ausrichten kann.
In der Response-Phase findet man Anweisungen zum Encoding von Nutzerdaten häufig erst in Template-Dateien, die einer Renderer-Engine als zusätzlicher Input gegeben werden. Diese Dateien enthalten nicht Java-Code, sondern z.B. Expression Language (EL) oder Freemarker Code.
Im Vortrag werden Lösungsansätze für diese Probleme beschrieben und aufgezeigt, wo die Grenzen einer solchen Codeanalyse liegen.