flawopen.com/xss/Kotlin

● CWE-79 · Hoch
Sicherheitsforschung · FlawOpen

Cross-Site Scripting in Kotlin

Learn how to fix Cross-Site Scripting (XSS) (CWE-79) in Kotlin. Side-by-side vulnerable vs secure code examples for Ktor HTML DSL and Thymeleaf template escaping.

💡 Einfache Erklärung (ELI5)

Stellen Sie sich vor, jemand heftet einen Zettel an das schwarze Brett im Flur mit dem Text: 'Jeder, der dies liest, muss seine Brieftasche dem Nächsten übergeben'. Wenn die Passanten jedem Zettel blind gehorchen würden, könnte jeder Zettelschreiber das Geld aller Besucher stehlen.

Kernkonzepte & Begriffe

Web Application Security
Kernkomponente der Architektur, die von CWE-79 betroffen ist.
CWE-79
Standardmäßige Common Weakness Enumeration (CWE)-Klassifizierung für xss-kotlin.
Defense-in-Depth
Mehrschichtige technische Verifikation und Laufzeit-Grenzenisolation.

Schritt-für-Schritt Angriffsablauf

Step 1

Einschleusung von Skript-Payloads

Ein Angreifer fügt HTML-Elemente oder JavaScript-Code (z. B. <script> oder <img onerror=...>) in Eingabefelder oder URLs ein.

Step 2

Unescapte Kontext-Interpolation

Die Webanwendung gibt die Eingabe direkt in der HTML-Antwort aus, ohne kontextgerechtes HTML-Entity-Encoding anzuwenden.

Step 3

Browser-DOM-Verarbeitung und Ausführung

Wenn ein Opfer die Seite aufruft, führt der Browser den eingeschleusten Code mit den Rechten der Website aus.

Step 4

Sitzungsübernahme und Ursprungs-Kompromittierung

Das Skript stiehlt Authentifizierungs-Cookies, liest den localStorage aus oder führt Aktionen im Namen des Nutzers durch.

Quellcode: Verwundbar vs. Sicher

✕ VERWUNDBARE IMPLEMENTIERUNG
// untrusted HTML loaded with JS + native bridge
webView.settings.javaScriptEnabled = true
webView.addJavascriptInterface(
  NativeBridge(), "Android"
)
webView.loadData(untrustedHtml,
  "text/html", "UTF-8")
✓ GEHÄRTETER SICHERHEITS-PATCH
// sanitize first; avoid exposing a bridge
val safeHtml = sanitize(untrustedHtml)
webView.settings.javaScriptEnabled = false
webView.loadData(safeHtml,
  "text/html", "UTF-8")

Checkliste für Engineering & Systemsicherheit

References